Les Widgets de l’Abstract Window Toolkit en Java Langages Orientés Objet - David Roussel ensiie 2 Septembre 2006 1 Les Packages de l ’AWT • Java.awt : contient les classes pour créer des interfaces graphiques, dessiner et gérer des images. – color : espace des couleurs – datatransfer : transfert de données dans et entre les applis (clipboard, MIME, …) – dnd : Drag aNd Drop – event : Gestion des événements générés par les composants AWT – font : Dessin de fontes (texte mis en forme) – geom : Formes 2D – im : Input Methods, entrées de texte évolué (Kanji, Parole, Ecriture manuscrite) – image : Créer et modifier des images, (consommateurs, producteurs) – print : API pour imprimer les documents. 2006 Widgets Java - David Roussel 2 Hiérarchie des composants graphiques Object Button Checkbox List Choice Component (abstraite) Canvas Label TextArea TextComponent TextField Applet Container (abstraite) Panel Dialog Window Frame MenuBar MenuComponent (abstraite) Menu MenuItem CheckboxMenu 2006 Exemples Widgets Java - David Roussel 3 Composition des Widgets • Component : les Components sont les widgets de base qui forme l’interface utilisateur d ’un programme. • Container : les Containers contiennent un ou plusieurs Component disposés en utilisant des LayoutManagers pour gérer leur dispositions. • Arbre d’inclusion des Widgets : – héritage Component (abstraite) Panel – placement dans Container (abstraite) Window 2006 Widgets Java - David Roussel 4 Comment disposer les composants • Utilisation des LayoutManagers (« Gestionnaires d’agencement ») • Applicables à tout Container • FlowLayout • GridLayout • BorderLayout Exemples • GridBagLayout 2006 Widgets Java - David Roussel 5 Evénements • Un événement est émis par un composant (un widget) – Evènement de bas niveau : clic souris (MouseEvent), saisie clavier (KeyEvent), gestion du focus (FocusEvent), gestion des mouvements de la souris (MouseMotionEvent) – Evènement de haut niveau : clic sur un bouton ou un item de liste (ActionEvent) • Il faut associer au composant à l’origine de l’événement un contrôleur adéquat : – en utilisant la méthode addxxxListener( xxxListener ) du composant – Tous les xxxListener sont des interfaces, il suffit donc de définir des classes qui implémentent ces interfaces pour gérer les actions à effectuer en réponse à ces événements. 2006 Widgets Java - David Roussel 6 Hiérarchie des événements AWTEvent ContainerEvent ComponentEvent FocusEvent InputEvent MouseEvent KeyEvent PaintEvent WindowEvent ActionEvent ItemEvent 2006 Widgets Java - David Roussel 7 Hiérarchie des Listeners/Adapters Tous les xxxListener sont des interfaces et les xxxAdapter fournissent une implémentation par défaut de ces interfaces (Delegation Model) EventListener ComponentListener ComponentAdapter ContainerListener ContainerAdapter FocusListener FocusAdapter MouseMotionListener MouseMotionAdapter MouseListener MouseAdapter KeyEvent KeytAdapter WindowEvent WindowAdapter ActionListener 2006 ItemListener Widgets Java - David Roussel 8 Dessiner avec Java AWT • Les opérations de dessin s’effectuent dans un « Component » la plupart du temps dans un « Canvas » : avec la méthode « paint(Graphics g) ». • Les opérations de dessin sont réalisées par la classe « Graphics » – Pas de constructeurs publics (instance fournie par le système) – Obtention d ’une instance de Graphics par la méthode « getGraphics » d’un Component (souvent un Canvas). 2006 Widgets Java - David Roussel 9 Les Widgets SWING http://java.sun.com/docs/books/tutorial/uiswing/index.html ensiie 2 Septembre 2006 Langages Orientés Objet - David Roussel 10 Fenêtres Swing Component Container • JApplet • JFrame • JDialog AWT Swing Panel Applet JApplet JWindow Frame JFrame Dialog JDialog Window Widgets Java - David Roussel 2006 11 Conteneurs Swing • • • • • Component Container Jpanel JScrollPane SplitPane Tabbedpane Toolbar JPanel JScrollPane JComponent JSplitPane JTabbedPane JToolbar 2006 Widgets Java - David Roussel 12 Conteneurs Swing spéciaux Component JLayeredPane Container JRootPane JComponent JInternalFrame RootPaneContainer Container getContentPane() Component getGlassPane() JlayeredPane getLayeredPane() JRootPane getRootPane() setContentPane(Container) setGlassPane(Component) setLayeredPane(JLayeredPane) JApplet JDialog JFrame JWindow Widgets Java - David Roussel 2006 Contrôles Component 13 JCheckBox JToggleButton JRadioButton JButton JAbstractButton Container JMenuItem JMenu Buttons JSeparator JComponent JComboBox JList JMenuBar JSlider JSpinner JTextComponent 2006 JTextField Widgets Java - David Roussel JFormattedTextField 14 Contrôles d’information • JLabel • JProgressBar • JToolTip Component Container JLabel JComponent JProgressBar JToolTip Widgets Java - David Roussel 2006 15 Contrôles fortement structurés • • • • • Component Container JcolorChooser JFileChooser JTable JTextArea JTree JColorChooser JFileChooser JComponent JTable JTextComponent JTextArea JTree 2006 Widgets Java - David Roussel 16