Les composants SWING
Transcription
Les composants SWING
Les composants SWING Java page : 1 Les limites de l'AWT Abstract Window Toolkit indépendance de l'IHM complète au niveau de la programmation Java incomplète au niveau de l'apparence et du comportement (look-and-feel) de l'interface les composants de l'AWT (boutons, menus, libellés, …) sont implantés par des objets de l'environnement d'exécution page : 2 Objectifs de Swing (1) Offrir des composants d'IHM totalement indépendants de la plate-forme d'exécution (car eux-mêmes écrits en Java) Ces composants dits "composants légers" ont la même apparence et le même comportement sur toutes les plates-formes (Unix, Mac, PC) Java page : 3 Objectifs de Swing (2) il est possible de changer dynamiquement l'apparence et le comportement de tous les composants d'une interface par la technique dite du "plugable look and feel" (PLAF) écriture en Java : toute amélioration ou adjonction de nouveaux composants sera automatiquement disponible sur toutes les plate-formes Java page : 4 Présentation de Swing tous les composants Swing ne sont pas légers car il faut communiquer avec l'interface de fenêtrage de la plate-forme sur laquelle s'exécute l'application 4 composants LOURDS : les conteneurs JFrame JDialog JWindow JApplet Java page : 5 Conteneurs de base (1) différence principale de la programmation par rapport à l'AWT: les conteneurs de base contiennent plusieurs surfaces d'affichage (panes) Surfaces d'affichage contentPane contient tous les composants habituels de l'interface (boutons, champs de texte, …) glassPane surface "transparente" au-dessus des autres surfaces permettant d'afficher temporairement des informations (applique le L&F) Java page : 6 Conteneurs de base (2) menuBar surface réservée à une barre de menu qui rend place en haut de la totale visible layerPane ensembles de surfaces superposées, qui contient au départ la contentPane et la menuBar mais à laquelle on peut ajouter d'autres surfaces (ex: ajouter des menus pop-up) Java page : 7 conteneurs de base (3) organisations des surfaces d'affichage GlassPane JmenuBar ContentPane (autres surfaces : JLayredPane, JrootPane, JFrame) Java page : 8 Conteneurs de base (4) la présence des différentes surfaces ne permet plus l'ajout simple et direct de composants à un conteneur de base exemple (ajout d'une étiquette dans un frame) awt : f.add(e) swing: f.getContentPane().add(e) Java page : 9 Les JComponents Tous les composants Swing sont des descendants de JComponent JComponent est un descendant de Container tout composant Swing peut contenir d'autres composants La classe Jcomponent possédent : 105 méthodes propres 39 méthodes héritées de java.awt.Container 106 méthodes héritées de java.awt.Component Java page : 10 Classification des méthodes de JComponent Look-and-feel Associer au composant un objet responsable de son apparence et de son comportement Dessin Dessiner et redessiner le composant, sa bordure et ses sous-composants Focus Déterminer quand le composant devient actif ou inactif par rapport aux entrées du clavier Taille et position Définir et contrôler la taille et le positionnement du composant (taille min., max., préférées, … ) Java page : 11 Classification des méthodes de JComponent Clavier Déterminer les réactions aux frappes claviers, les raccourcis clavier,etc …) Aide immédiate Fixer le texte d'aide à afficher quand la souris passe sur le composant Accessibilité: Déterminer la manière dont le composant doit apparaître à des personnes souffrants des handicaps (affichage de très grosse taille, remplacement de l'image par le son, le braille, etc…) Java page : 12 Composants Swing et AWT (1) AWT Swing Commentaires Button AbstractButton JButton On peut associer une icône plutôt qu'un texte à un JButton Pas d'équivalent Canvas Checkbox JToggleButton JCheckBox JRadioButton On fait la distinction entre les JCheckBox destinés aux sélections multiples et les JRadioButton pour les sélections uniques dans un groupe CheckboxGroup ButtonGroup Un groupe de tout ce qui est bouton CheckboxMenuItem JCheckboxMenuItem Un article de menu qui peut porter une marque de sélection Choice JPopupMenu JComboBox Le JComboBox permet de choisir dans une liste mais aussi de saisir un texte dans un champ Component JComponent Un Jcomponent comprend un look-andfeel modifiable, das aides immédiates Un Jcomponent est un conteneur, tout composant Swing peut en contenir un autre Java page : 13 Composants Swing et AWT (2) AWT Swing Commentaires Dialog JDialog JDialog est un conteneur de base qui contient un RootPane FileDialog JFileChooser Frame JFrame Ajout de nombreuses méthodes de configuration et de contrôle du dialogue de choix d'un fichier Extension de Frame qui permet la gestion de surfaces de dessine et d'interactions superposées (glassPane, LayeredPane, rootPane) et des barres de menus Label JLabel List JList Menu JMenu Un JMenu est essentiellement un bouton associé à un JPopUpMenu MenuBar JMenuBar une barre formée de JMenu Java peut également contenir une image une JList n'a pas de barre de défilement, il faut l'inclure dans le viewPort d'un JScrollPane page : 14 Composants Swing et AWT (3) AWT Swing Commentaires MenuItem JMenuItem Un JMenuItem est en fait un bouton placé dans une liste. Il peut contenir un texte, une icône ou les deux Les équivalents clavier sont gérés globalement pour tous les composants Swing MenuShortcut Panel JPanel le composant qui sert à grouper d'autres composants PopupMenu JPopupMenu Scrollbar JScrollBar TextArea JTextArea dans AWT le menu pop-up est une sorte de menu, dans Swing c'est le menu qui est composé d'un bouton et d'un menu pop-up en général associé à un JViewport qui montre une partie d'un texte ou d'une image Le JTextArea ne posséde pas de barre de défilement mais il implémente l'interface Scrollable, ce qui permet de le placer dans un JScrollPane Java page : 15 Composants Swing et AWT (4) AWT Swing TextComponent JTextComponent Le contenu (modèle) d'un JTextComponent n'est pas un simple String mais un Document TextField JTextField La gestion des champs de type mot de passe JPasswordField doit se faire dans un JPasswordField Window JWindow Java Commentaires Une fenêtre simple, sans titre ni bouton de manipulation page : 16 Nouveaux composants introduits dans Swing Classe Description Box un conteneur qui utilise la mise en page Box JColorChooser un panneau pour sélectionner une couleur JDesktopPane un conteneur pour créer des bureaux virtuels contenant plusieurs fenêtres (InternalFrame) JEditorPane composant texte qui permet d'éditer différents types de contenus : texte simple, HTML, RTF, etc. JInternalFrame comme un Jframe mais léger et fait pour vivre à l'intérieur d'un DesktopPane JLayeredPane panneaux superposés JOptionPane panneau d'information ou d'erreur avec bouton (OK, Cancel, etc. ) JProgressBar un composant montrant l'évolution d'un processus sous forme d'une barre qui grandit JRootPane le composant de départ dans une hiérarchie de composants. Contient d'autres panneaux : contenu, transparent, barre de défilement, panneaux superposés Java page : 17 Java page : 18