Programmation en Java Interface graphique
Toolkits graphiques Java AWT Obsolète Swing Supporté par Sun/Oracle Repose sur AWT mais Swing <> AWT, JBu@on<>Bu@on SWT libre, iniaé par IBM/Eclipse 2
Swing Your ApplicaAon Swing AWT Components Bu@on Frame ScrollBar... Windows Font Dialog Frame Color Graphics AWT AWT Event Tool Kit Accessibility Java 2D Drag and Drop JFC 3
Conteneurs de haut niveau Trois classes de conteneurs premier niveau (Top- Level Containers): ne sont pas des sous classes de JComponent. Ces objets doivent leur nom au fait qu'ils consltuent toujours les objets de base d'une interface Swing. Un conteneur de premier niveau peut contenir des objets d'une des sous- classes de JComponent, mais n'est pas deslné à être contenu dans un autre conteneur de premier niveau. Ce groupe comprend les applets (JApplet), les dialogues (JDialog), et les cadres (JFrame). 4
5
JFrame Constructeur JFrame() JFrame(String) Rôle CréaAon d'une instance en précisant le Atre 6
JComponent Dérive des classes (AWT) Component et Container Ajoute elle- même de nombreuses méthodes Offre donc de très nombreuses foncaonnalités qui sont héritées par tous les composants graphiques java.lang.object java.awt.component java.awt.container javax.swing.jcomponent 7
JComponent JComponent JColorChooser JComboBox JFileChooser JInternalFrame JLabel JList JMenuBar JOpAonPane JLayeredPane JDesktopPane JPanel JPopupMenu JProgressBar JRootPane JScrollBar JScrollPane JSeparator JSlider JSplitPane JTabbedPane JTable JTableHeader JToolBar JToolTip JTree JViewport JTextComponent JEditorPane JTextPane JTextArea JTextField JPasswordField AbstractBu@on JBu@on JMenuItem JCheckBox- MenuItem JRadioBu@on- MenuItem JMenu JToggleBu@on JRadioBu@on JCheckBox 8
Etiquettes : la classe JLabel Constructeurs JLabel() JLabel(Icon) JLabel(Icon, int) JLabel(String) JLabel(String, Icon, int) JLabel(String, int) Rôle Création d'une instance sans texte ni image Création d'une instance en précisant l'image Création d'une instance en précisant l'image et l'alignement horizontal Création d'une instance en précisant le texte Création d'une instance en précisant le texte, l'image et l'alignement horizontal Création d'une instance en précisant le texte et l'alignement horizontal 9
Méthodes settext(string text) setopaque(..) setbackground(...) setfont(...) setforeground(...) sethorizontalalignment(...) setverticalalignment(...) sethorizontaltextalignment(int alignment) setverticaltextalignment(int alignment) seticon(icon icon) setdisabledicon(icon disabledicon) Rôle Permet d'initialiser ou de modifier le texte affiché Indique si le composant est transparent (paramètre false) ou opaque (true) Indique la couleur de fond du composant (setopaque doit être à true) Permet de préciser la police du texte Permet de préciser la couleur du texte Permet de modifier l'alignement horizontal du texte et de l'icône Permet de modifier l'alignement vertical du texte et de l'icône Permet de modifier l'alignement horizontal du texte uniquement Permet de modifier l'alignement vertical du texte uniquement Permet d'assigner une icône Permet de définir l'icône associée au JLabel lorsqu'il est désactivé 10
Class JButton JCheckBox JRadioButton JMenuItem JCheckBoxMenuItem JRadioButtonMenuItem JToggleButton Summary A common button. A check box button. One of a group of radio buttons. An item in a menu. A menu item that has a check box. A menu item that has a radio button. Implements toggle functionality inherited by JCheckBox and JRadioButton. Can be instantiated or subclassed to create two-state buttons. 11
Boutons JComponent AbstractBu@on JBu@on JToggleBu@on JCheckBox JRadioBu@on 12
Bouton Peut contenir du texte (qui peut être du code HTML) mais aussi une image (et on peut choisir la posiaon relaave des 2) Le caractère souligné du texte indique le caractère mnémonique (pour simuler un clic avec le clavier) Un bouton peut être invalidé (texte en «gris» du bouton de droite) 13
Constructeur JButton() JButton(String) JButton(Icon) JButton(String, Icon) Rôle préciser le texte du bouton préciser une icône préciser un texte et une icône 14
HTML dans les boutons Les dernières versions de swing ont ajouté la possibilité d inclure du code HTML dans les labels et les boutons (tous les types de boutons) Inclure le texte dans les balises <html> et </html> : new JBuYon("<html>Ligne 1<p>Ligne 2</html>") 15
HTML dans les composants Swing Les composants suivants perme@ent l ualisaaon de texte HTML : JBu@on, JLabel, JMenuItem, JMenu, JRadioBu@onMenuItem, JCheckBoxMenuItem, JTabbedPane, JToolTip, JToggleBu@on, JCheckBox, and JRadioBu@on 16
Demo 17
ToggleButton Boutons qui ont 2 états : sélecaonnés ou pas Deux sous- classes CheckBox RadioBuYon 18
JCheckBox Constructeur JCheckBox(String) JCheckBox(String, boolean) JCheckBox(Icon) JCheckBox(Icon, boolean) JCheckBox(String, Icon) JCheckBox(String, Icon, boolean) Rôle précise l'intitulé précise l'intitulé et l'état spécifie l'icône utilisée précise l'intitulé et l'état du bouton précise l'intitulé et l'icône précise l'intitulé, une icône et l'état 19
Boîte à cocher: Traitement des événements Un clic sur un ToggleBu@on génère un AcAonEvent et un ItemEvent Avec une boîte à cocher, le plus simple est de traiter les ItemEvent avec un ItemListener Mais les boîtes à cocher n ont souvent pas d écouteurs et on relève leur valeur quand on en a besoin avec isselected() 20
Boîtes à cocher JCheckBox boite = new JCheckBox("Label"); boite.additemlistener(boiteitemlistener); // La boîte ne sera pas cochée boite.setselected(false);... // Récupère l'état de la boîte boolean on = boite.isselected(); 21
Boîtes à cocher: ItemListener class BoiteListener implements ItemListener { public void itemstatechanged(itemevent e) { Object source = e.getitemselectable(); if (source == boite) { } } } if (e.getstatechange() == ItemEvent.DESELECTED)... 22
AfJichage des boîtes à cocher Il faut ajouter toutes les boîtes à un container Le plus souvent un JPanel conaent les boîtes ; il est simple de les aligner horizontalement ou veracalement avec un GridLayout 23
JRadioButton Constructeur JRadioButton() JRadioButton(Icon) JRadioButton(Icon, boolean) JRadioButton(String) JRadioButton(String, boolean) JRadioButton(String, Icon) JRadioButton(String, Icon, boolean) Rôle Créer un bouton non sélectionné sans libellé Créer un bouton non sélectionné sans libellé avec l'icône fournie en paramètre Créer un bouton sans libellé avec l'icône et l'état fournis en paramètres Créer un bouton non sélectionné avec le libellé fourni en paramètre Créer un bouton avec le libellé et l'état fournis en paramètres Créer un bouton non sélectionné avec le libellé et l'icône fournis en paramètres Créer un bouton avec le libellé, l'icône et l'état fournis en paramètres 24
ButtonGroup Un groupe de boutons radio est encapsulé dans un objet de type BuYonGroup. Ajouter tous les JRadioBuYon du groupe en ualisant la méthode add() de la classe BuYonGroup. Pour désélecaonner tous les boutons: Appeler la méthode clearseleclon() 25
Exemple: boutons radios ButtonGroup groupe = new ButtonGroup(); JRadioButton b1 = new JRadioButton("Choix 1"); JRadioButton b2 = new JRadioButton("Choix 2"); groupe.add(b1); groupe.add(b2); panel.add(b1); panel.add(b2); 26
Bouton radio: Traitement des événements Le plus simple est d écouter avec un AcAonListener Cet événement est engendré quand le bouton radio est sélecaonné (pas quand il est désélecaonné) L ualisaaon d un ItemListener serait plus complexe car la sélecaon d un bouton du groupe désélecaonne tous les autres et engendre donc un grand nombre de ItemEvent 27
Boutons radio // Le groupe de boutons ButtonGroup group = new ButtonGroup(); // Les boutons JRadioButton b1 = new JRadioButton("Label1"); b1.setselected(true); // Sélectionne le bouton JRadioButton b2 = new JRadioButton("Label2"); // Ajoute les boutons au groupe group.add(b1);... // Ajoute les boutons dans l'interface graphique panel.add(b1);... // Ajoute les actionlisteners ; les "actioncommands" // peuvent différencier les boutons dans les listeners b1.setactioncommand("label1");... b1.addactionlistener(boutonlistener);... 28
Question? 29