ensiie 2 Septembre 2006 Langages Orientés Objet -David Roussel 1
Les Widgets de l’Abstract Window Toolkit en Java
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)
2006 Widgets Java -David Roussel 3
Hiérarchie des composants graphiques
Object
Component (abstraite)
MenuComponent (abstraite)
Button Checkbox List Choice
Canvas
TextComponent
TextArea
TextField Container
(abstraite)
Panel
Window
Dialog
Frame MenuBar
MenuItem
Menu
CheckboxMenu Label
Exemples
Applet
2006 Widgets Java -David Roussel 4
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
– placement dans
Container (abstraite)
Panel
Window Component
(abstraite)
2006 Widgets Java -David Roussel 5
Comment disposer les composants
• Utilisation des LayoutManagers (« Gestionnaires d’agencement »)
• Applicables à tout Container
• FlowLayout
• GridLayout
• BorderLayout
• GridBagLayout
Exemples
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 7
Hiérarchie des événements
AWTEvent
ComponentEvent
InputEvent
MouseEvent
ActionEvent
ContainerEvent
KeyEvent FocusEvent
PaintEvent WindowEvent
ItemEvent
2006 Widgets Java -David Roussel 8
Hiérarchie des Listeners/Adapters
Tous les xxxListener sont des interfaceset les xxxAdapter fournissent une implémentation par défaut de ces interfaces (Delegation Model)
EventListener
ComponentListener
MouseMotionListener
ActionListener ContainerListener
KeyEvent FocusListener
WindowEvent MouseListener
ComponentAdapter ContainerAdapter FocusAdapter
MouseMotionAdapter MouseAdapter
KeytAdapter WindowAdapter
ItemListener
2006 Widgets Java -David Roussel 9
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).
Les Widgets SWING
http://java.sun.com/docs/books/tutorial/uiswing/index.html
2006 Widgets Java -David Roussel 11
Fenêtres Swing
• JApplet
• JFrame
• JDialog
JApplet
JDialog JFrame Panel Applet
Container
Window
Dialog Frame
AWT Swing Component
JWindow
2006 Widgets Java -David Roussel 12
Conteneurs Swing
• Jpanel
• JScrollPane
• SplitPane
• Tabbedpane
• Toolbar Container
Component
JComponent
JPanel JScrollPane JSplitPane JTabbedPane JToolbar
2006 Widgets Java -David Roussel 13
Conteneurs Swing spéciaux
Container Component
JComponent
JInternalFrame JLayeredPane JRootPane
Container getContentPane() Component getGlassPane() JlayeredPane getLayeredPane() JRootPane getRootPane() setContentPane(Container) setGlassPane(Component) setLayeredPane(JLayeredPane)
RootPaneContainer
JApplet JDialog
JFrame JWindow
Contrôles
Container Component
JComponent
JAbstractButton
JButton
JComboBox JList
JMenuItem JMenu
JMenuBar JSlider
JTextComponent JTextField JFormattedTextField JSpinner
JSeparator
Buttons
JToggleButton
JCheckBox JRadioButton
2006 Widgets Java -David Roussel 15
Contrôles d’information
• JLabel
• JProgressBar
• JToolTip
Container Component
JComponent
JLabel
JProgressBar
JToolTip
2006 Widgets Java -David Roussel 16
Contrôles fortement structurés
• JcolorChooser
• JFileChooser
• JTable
• JTextArea
• JTree Container
Component
JComponent
JColorChooser JFileChooser JTable
JTextArea JTextComponent
JTree