Programmation en Java Interface graphique

publicité
Programmation en Java Interface graphique NGUYEN Thi Minh Tuyen Toolkits graphiques Java •  AWT •  Swing •  Supporté par Sun/Oracle •  Repose sur AWT mais Swing <> AWT, JBu@on<>Bu@on NGUYEN Thi Minh Tuyen •  Obsolète •  SWT •  libre, iniAé par IBM/Eclipse 2 Swing Your ApplicaAon Swing Windows Dialog Frame AWT Event Accessibility Java 2D Font Color Graphics AWT Tool Kit Drag and Drop NGUYEN Thi Minh Tuyen AWT Components Bu@on Frame ScrollBar ... JFC 3 Conteneurs de haut niveau Trois classes de conteneurs premier niveau (Top-­‐Level Containers): •  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). NGUYEN Thi Minh Tuyen •  ne sont pas des sous classes de JComponent. 4 5 NGUYEN Thi Minh Tuyen JFrame Constructeur Rôle JFrame() CréaAon d'une instance en précisant le Atre NGUYEN Thi Minh Tuyen JFrame(String) 6 JComponent •  Dérive des classes (AWT) Component et Container •  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 NGUYEN Thi Minh Tuyen •  Ajoute elle-­‐même de nombreuses méthodes 7 JComponent JComponent JPanel JSplitPane JComboBox JPopupMenu JTabbedPane JFileChooser JProgressBar JInternalFrame AbstractBu@on JBu@on JMenuItem JToggleBu@on JTable JCheckBox-­‐
MenuItem JRadioBu@on JRootPane JTableHeader JRadioBu@on-­‐
MenuItem JCheckBox JLabel JScrollBar JToolBar JMenu JList JScrollPane JToolTip JMenuBar JSeparator JTree JOpAonPane JSlider JViewport JTextComponent JEditorPane JTextArea NGUYEN Thi Minh Tuyen JColorChooser JTextField JLayeredPane JTextPane JDesktopPane JPasswordField 8 Constructeurs Rôle JLabel() Création d'une instance sans texte ni image JLabel(Icon) Création d'une instance en précisant l'image JLabel(Icon, int) Création d'une instance en précisant l'image et
l'alignement horizontal JLabel(String) Création d'une instance en précisant le texte JLabel(String, Icon, int) Création d'une instance en précisant le texte,
l'image et l'alignement horizontal JLabel(String, int) Création d'une instance en précisant le texte
et l'alignement horizontal NGUYEN Thi Minh Tuyen Etiquettes : la classe JLabel 9 Rôle setText(String text) Permet d'initialiser ou de modifier le texte
affiché setOpaque(..) Indique si le composant est transparent
(paramètre false) ou opaque (true) setBackground(...) Indique la couleur de fond du
composant (setOpaque doit être à true) setFont(...) Permet de préciser la police du texte setForeGround(...) Permet de préciser la couleur du texte setHorizontalAlignment(...) Permet de modifier l'alignement horizontal du
texte et de l'icône setVerticalAlignment(...) Permet de modifier l'alignement vertical du
texte et de l'icône setHorizontalTextAlignment(int
alignment) Permet de modifier l'alignement horizontal du
texte uniquement setVerticalTextAlignment(int
alignment) Permet de modifier l'alignement vertical du
texte uniquement setIcon(Icon icon) Permet d'assigner une icône setDisabledIcon(Icon
disabledIcon) Permet de définir l'icône associée au JLabel
lorsqu'il est désactivé NGUYEN Thi Minh Tuyen Méthodes 10 Summary JButton A common button. JCheckBox A check box button. JRadioButton One of a group of radio buttons. JMenuItem An item in a menu. JCheckBoxMenuItem A menu item that has a check box. JRadioButtonMenuItem A menu item that has a radio button. JToggleButton Implements toggle functionality
inherited by JCheckBox and
JRadioButton. Can be instantiated
or subclassed to create two-state
buttons. NGUYEN Thi Minh Tuyen Class 11 Boutons AbstractBu@on JBu@on JToggleBu@on NGUYEN Thi Minh Tuyen JComponent JCheckBox JRadioBu@on 12 Bouton •  Peut contenir du texte (qui peut être du code HTML) mais •  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 NGUYEN Thi Minh Tuyen aussi une image (et on peut choisir la posiAon relaAve des 2) droite) 13 JButton() Rôle JButton(String) préciser le texte du bouton JButton(Icon) préciser une icône JButton(String, Icon) préciser un texte et une icône NGUYEN Thi Minh Tuyen Constructeur 14 HTML dans les boutons •  Les dernières versions de swing ont ajouté la possibilité types de boutons) •  Inclure le texte dans les balises <html> et </html> : NGUYEN Thi Minh Tuyen d’inclure du code HTML dans les labels et les boutons (tous les 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 : JCheckBoxMenuItem, JTabbedPane, JToolTip, JToggleBu@on, JCheckBox, and JRadioBu@on NGUYEN Thi Minh Tuyen •  JBu@on, JLabel, JMenuItem, JMenu, JRadioBu@onMenuItem, 16 NGUYEN Thi Minh Tuyen Demo 17 ToggleButton •  Boutons qui ont 2 états : sélecAonnés ou pas •  CheckBox •  RadioBuYon NGUYEN Thi Minh Tuyen •  Deux sous-­‐classes 18 Constructeur Rôle JCheckBox(String) précise l'intitulé JCheckBox(String, boolean) précise l'intitulé et l'état JCheckBox(Icon) spécifie l'icône utilisée JCheckBox(Icon, boolean) précise l'intitulé et l'état du bouton JCheckBox(String, Icon) précise l'intitulé et l'icône JCheckBox(String, Icon, boolean) précise l'intitulé, une icône et l'état NGUYEN Thi Minh Tuyen JCheckBox 19 Boîte à cocher: Traitement des événements •  Un clic sur un ToggleBu@on génère un AcAonEvent et un ItemEvent •  Mais les boîtes à cocher n’ont souvent pas d’écouteurs et on relève leur valeur quand on en a besoin avec isSelected() NGUYEN Thi Minh Tuyen •  Avec une boîte à cocher, le plus simple est de traiter les ItemEvent avec un ItemListener 20 Boîtes à cocher JCheckBox boite = new JCheckBox("Label");
boite.addItemListener(boiteItemListener);
boite.setSelected(false);
. . .
// Récupère l'état de la boîte
NGUYEN Thi Minh Tuyen // La boîte ne sera pas cochée
boolean on = boite.isSelected(); 21 Boîtes à cocher: ItemListener class BoiteListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
Object source = e.getItemSelectable();
if (e.getStateChange() == ItemEvent.DESELECTED)
...
}
}
} NGUYEN Thi Minh Tuyen if (source == boite) {
22 AfJichage des boîtes à cocher •  Il faut ajouter toutes les boîtes à un container les aligner horizontalement ou verAcalement avec un GridLayout NGUYEN Thi Minh Tuyen •  Le plus souvent un JPanel conAent les boîtes ; il est simple de 23 Constructeur Rôle JRadioButton() Créer un bouton non sélectionné sans
libellé JRadioButton(Icon) Créer un bouton non sélectionné sans
libellé avec l'icône fournie en
paramètre JRadioButton(Icon, boolean) Créer un bouton sans libellé avec
l'icône et l'état fournis en paramètres JRadioButton(String) Créer un bouton non sélectionné avec
le libellé fourni en paramètre JRadioButton(String, boolean) Créer un bouton avec le libellé et l'état
fournis en paramètres JRadioButton(String, Icon) Créer un bouton non sélectionné avec
le libellé et l'icône fournis en
paramètres JRadioButton(String, Icon,
boolean) Créer un bouton avec le libellé, l'icône
et l'état fournis en paramètres NGUYEN Thi Minh Tuyen JRadioButton 24 ButtonGroup •  Un groupe de boutons radio est encapsulé dans un objet de •  Ajouter tous les JRadioBuYon du groupe en uAlisant la méthode add() de la classe BuYonGroup. •  Pour désélecAonner tous les boutons: NGUYEN Thi Minh Tuyen type BuYonGroup. •  Appeler la méthode clearSelecLon() 25 Exemple: boutons radios ButtonGroup groupe = new ButtonGroup();
JRadioButton b1 = new JRadioButton("Choix 1");
groupe.add(b1);
groupe.add(b2);
panel.add(b1);
NGUYEN Thi Minh Tuyen JRadioButton b2 = new JRadioButton("Choix 2");
panel.add(b2); 26 Bouton radio: Traitement des événements •  Le plus simple est d’écouter avec un AcAonListener 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 NGUYEN Thi Minh Tuyen •  Cet événement est engendré quand le bouton radio est 27 Boutons radio // Le groupe de boutons
ButtonGroup group = new ButtonGroup();
// Les boutons
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); . . .
NGUYEN Thi Minh Tuyen JRadioButton b1 = new JRadioButton("Label1");
// Ajoute les actionListeners ; les "actionCommands"
// peuvent différencier les boutons dans les listeners
b1.setActionCommand("label1"); . . .
b1.addActionListener(boutonListener); . . . 28 NGUYEN Thi Minh Tuyen Question? 29 
Téléchargement