cours-I4swing
4 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
4 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Universite d’Aix-Marseille III - Licence de math-info 2eme anneeI4 : Programmation objet - L’interface graphique avec SwingSwing est une bibliotheque de classes qui permet de creer une interface utilisateur graphique (GUI). Avecce type d’application, nous nous trouvons dans le cadre de ce qu’on appelle la programmation evenementielle.On cree et assemble di erents composants (fen^etres, boutons, champs textuels, menus, etc) pour composerl’interface et on associe des methodes aux di erents evenements pouvant survenir (appui sur un bouton,fermeture de fen^etre, entree d’un texte dans un champ textuel, selection d’un item dans un menu, etc).Ce qui suit n’est qu’une presentation tres partielle et succinte de ce qu’on peut faire avec Swing, avecpour seul objectif que vous puissiez resoudre les exercices qui vous seront donnes en TP. Pour avoir une vuegenerale et complete de Swing, on pourra par exemple consulter le tutorial a l’adresse :http://java.sun.com/docs/books/tutorial/uiswing/Voici un exemple de programme Java utilisant Swing :import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;class Fenetre implements ActionListenerfprivate JLabel label = new JLabel("0");private int nbClics;public void actionPerformed(ActionEvent e)fnbClics++;label.setText("" + nbClics);gpublic void lanceFenetre()fJFrame frame = new JFrame("Compteur");frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);frame ...

Informations

Publié par
Nombre de lectures 24
Langue Français

Extrait

UniversitedAix-MarseilleIII-Licencedemath-info2emeannee
I4 :Programmation objet - L’interface graphique avec Swing
Swingestunebibliothequedeclassesquipermetdecreeruneinterfaceutilisateurgraphique(GUI).Avec ce type d’application, nous nous trouvons dans le cadre de ce qu’on appelle lammaroitavenenementielleogpr. Oncreeetassembledi erentscomposants(feneˆtres,boutons,champstextuels,menus,etc)pourcomposer linterfaceetonassociedesmethodesauxdi erentsevenementspouvantsurvenir(appuisurunbouton, fermeturedefenˆetre,entreeduntextedansunchamptextuel,selectiondunitemdansunmenu,etc). CequisuitnestquunepresentationtrespartielleetsuccintedecequonpeutfaireavecSwing,avec pourseulobjectifquevouspuissiezresoudrelesexercicesquivousserontdonnesenTP.Pouravoirunevue generaleetcompletedeSwing,onpourraparexempleconsulterletutorialaladresse: http://java.sun.com/docs/books/tutorial/uiswing/ Voici un exemple de programme Java utilisant Swing: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;
class Fenetre implements ActionListener{ private JLabel label = new JLabel(”0”); private int nbClics;
public void actionPerformed(ActionEvent e){ nbClics++; label.setText(”” + nbClics); }
public void lanceFenetre(){ JFrame frame = new JFrame(”Compteur”); frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);
frame.getContentPane().setLayout(new FlowLayout()); JButton bouton = new JButton(”Incrementation”); frame.getContentPane().add(bouton); frame.getContentPane().add(label);
bouton.addActionListener(this);
frame.pack(); frame.setVisible(true); } }
public class TesteFenetre{ public static void main(String[] args){ Fenetre f = new Fenetre(); f.lanceFenetre(); } }
1
Fig.1 –rt.ecAahtsFeneeˆgrammeTeionduproxetuceatluledtesRrlsurauentoouebqsiofeuqqilcnou incrementation,onaugmenteralenombresitueagaucheduneunite.Leprogrammesarreˆteraquandon fermeralafenˆetre.
Creationetachagedunefenˆetre Ilestconseilledutiliserlesquelettedeprogrammesuivant: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;
class Fenetre ...{ ... public void lanceFenetre(){ JFrame frame = new JFrame(”Titre”); frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); ... frame.pack(); frame.setVisible(true); } }
public class TesteFenetre{ public static void main(String[] args){ Fenetre f = new Fenetre(); f.lanceFenetre(); } } JFrame frame = new JFrame("Titre");neer,itretletTitserarceteedepmredonˆetrefenerun creantlinstanceframede typeJFrame.frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); indiquequelafenˆetresefermerasioncliquesurleboutondefermeturestandarddesfeneˆtres.Apresquonait ajoutetouslescomposantsdelafenˆetre,frame.pack();calcule sa structure interne.frame.setVisible(true); permetderendrelafenˆetrevisible.
Ajoutdecomposantsdansunefenˆetre frame.getContentPane().setLayout(new FlowLayout()); JButton bouton = new JButton(”Incrementation”); frame.getContentPane().add(bouton); frame.getContentPane().add(label); Les instances deJFrame(ici :frameunntdammeesotonstnospmoc)panneau ”contenu”, de typeContainer, destinearecevoirdescomposants,cest-a-diredesinstancesdeclassesderiveesdeComponent.Container estelle-mˆemeuneclassequiheritedeComponent. L’accesseurContainer getContentPane()retourne le panneau ”contenu” deframe.frame.getContentPane().setLayout(new FlowLayout());choisit leges-tionnaire de mise en forme (layout)de typeFlowLayoutpour le panneau. Les gestionnaires de mise en forme
2
determinentlafacondontlescomposantsserontdisposesautomatiquementsurlepanneau.Ici,ceserafaiten alignantlescomposantshorizontalementaufuretamesurequilssontajoutes,enpassantalalignesuivante desqueleborddroitdelafenˆetreestatteint.Lorsquelafeneˆtreseraredimensionnee,lescomposantsse repositionnerontautomatiquementsuivantlemeˆmeprincipemaisenfonctiondesnouvellesdimensionsdela feneˆtre.Ilexistedautrestypesdelayout:BoxLayout,GridLayout,BorderLayout, etc. La methodevoid add(Component)mposantaupanneauteedarojturenuocrmpeeuot.Itouayajna,ocicepserneleltnat unbouton,puisunlabel,tousdeuxdesinstancesdeclassesquideriventdeComponent.
Liaisonevenement-action Uneinterfacegraphiquesertarecevoirdesentreesviadesevenementsnestnega,racesiranemeeve executantcertainesactions(desmethodessontappelees)etaachergraphiquementleresultatdecesactions. Parexemple,onassocieunemethodeaunevenementdetypeactionpouvantsurvenirauneinstancede JButtongrceˆaedohalatemvoid addActionListener(ActionListener)elass ein(dlscadenaJButton). LeparametredecettemethodeestuneinstanceduneclasseimplementantlinterfaceActionListeneret de nissantlamethodepublic void actionPerformed(ActionEvent). C’est cette methode qui sera appelee lorsque qu’on appuiera sur le bouton. Il est possible que plusieurs composants (par exemple, deux boutons) associentleurevenementactionaunemˆemeinstancedeActionListeneruvpordoiteeinrmreI.fluaatolsr quelestlecomposantsourcedelevenementalinterieurdelamethodeactionPerformed. C’est la methode Object getSource()de la classeActionListenerretournant l’instance de l’objet sur lequel est apparu levenementquipermetdeledeterminer.ActionListenereritedehEventListener, qui est la racine de la hierarchiedeseventlisteners.Sesautressous-classes(interfaces)sont:ComponentListenerpour reagir quanduncomposantchangedetaille,depositionoudevisibilite,FocusListenerpour reagir quand un composant obtient le focus ou le perd,KeyListeneralefocusreagisselaappiuuorqouppmoceleuiuqtnaso au relachement d’une touche,MouseListenereotrenisursolandauqrigaerruopgeduchadeaaridtlesuro composant ou qu’on clique dessus, qu’on appuie ou qu’on relache un bouton de souris,MouseMotionListener pourreagiraudeplacementdelasourisaudessusducomposant,quunboutondelasourissoitpresseou non,etc.Chacunedecesinterfaceslistesaseriedemethodesade nirenreactionauxevenements.Le parametrepassealexecutiondecesmethodesestuneinstancedunesous-classedeEventObjectet permet derecupererdesinformationscomplementairessurlevenementquiestsurvenu(ex:coordonneesdupointeur de la souris lorsqu’on clique sur la souris).
Exemple LapplicationgraphiquesuivanteestconstituedunefenˆetrecontenantunboutonOui,unboutonNonet deux labels. Le premier label ache le nom du bouton au-dessus duquel se trouve la souris. Le second label achelenomdudernierboutonsurlequelonaclique.LaclasseFenetreimplementeActionListeneret MouseListenermethodesdelintafreec.eL5sMouseListenertnenofllsetreedenais3iesmstdoncdon ne rien.VoiciletatdelapplicationlorsqueledernierboutonsurlequelonaappuyeestleboutonNonetque lepointeurdelasourissetrouveendehorsdeszonesoccupesparlesboutons:
Fig.2 –
Voicileprogrammequipermetderealisercetteapplication(cfauverso):
3
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents