Interfaces Graphiques : AWT
Transcription
Interfaces Graphiques : AWT
Interfaces Graphiques : AWT Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Abstract Window Toolkit ■ AWT comporte : – des widgets – des LayoutManager – Un mécanisme de gestion d'événements, ... Généralités ■ Les widgets – – – – – – – – – – java.awt.Button java.awt.Canvas java.awt.Checkbox java.awt.Choice java.awt.Label java.awt.List java.awt.MenuBar java.awt.MenuItem java.awt.TextArea java.awt.TextField Généralités ■ java.awt.FlowLayout one four three two five Généralités ■ java.awt.BorderLayout North West Center South East Généralités ■ java.awt.GridLayout one two three four five six Exemple Exemple MenuBar Label TextField Choice List Checkbox Button Exemple // Text Field Panel Panel tfPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); label = new Label("TextField"); tfdPanel.add(label); textField = new TextField(15); tfPanel.add(textField); Exemple // Choice Panel Panel chPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); label = new Label("Choice"); chPanel.add(label); choice = new Choice(); choice.addItem("Solaris"); choice.addItem("Linux"); choice.addItem("Aix"); chPanel.add(choice); Exemple // List Panel Panel listPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); label = new Label("List"); listPanel.add(label); list = new List(); list.addItem("Solaris"); list.addItem("Linux"); list.addItem("Aix"); listPanel.add(list); Exemple // Checkbox Panel Panel cbPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); cbSolaris = new Checkbox("Solaris"); cbPanel.add(cbSolaris); cbLinux = new Checkbox("Linux"); cbPanel.add(cbLinux); cbAix = new Checkbox("Aix"); cbPanel.add(cbAix); Exemple // RadioButton Panel Panel rbPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); rbGroup = new CheckboxGroup(); rbSolaris = new Checkbox("Solaris"); rbSolaris.setCheckboxGroup(rbGroup); rbPanel.add(rbSolaris); rbLinux = new Checkbox("Linux"); rbLinux.setCheckboxGroup(rbGroup); rbPanel.add(rbLinux); rbAix = new Checkbox("Aix"); rbAix.setCheckboxGroup(rbGroup); rbPanel.add(rbAix); rbGroup.setSelectedCheckbox(rbSolaris); Exemple // Button Panel Panel btPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); okButton = new Button("Ok"); okButton.addActionListener(new OkButtonListener()); btPanel.add(okButton); cancelButton = new Button("Cancel"); cancelButton.addActionListener(new CancelButtonListener()); btPanel.add(cancelButton); Exemple // Menu Bar Menu procMenu = new Menu("Procedural"); procMenu.add(new MenuItem("Pascal")); ... Menu ooMenu = new Menu("Object Oriented"); ooMenu.add(new MenuItem("SmallTalk")); ... Menu funcMenu = new Menu("Functional"); funcMenu.add(new MenuItem("Lisp")); ... Menu languageMenu = new Menu("Languages"); languageMenu.add(procMenu); ... MenuBar mb = new MenuBar(); mb.add(languageMenu); Exemple public class FrameExample extends Frame { public FrameExample(String title) { super(title); // Widget, panel, menu bar creation ... setMenuBar(mb); setLayout(new GridLayout(0, 1, 2, 2)); add(textFieldPanel); add(choicePanel); add(listPanel); add(checkboxPanel); add(radioButtonPanel); add(buttonPanel); pack(); show(); } Gestion des événements souris (déplacements) ■ public boolean mouseDown(Event, int, int) – bouton appuyé ■ public boolean mouseUp(Event, int, int) – bouton lâché ■ public boolean mouseMove(Event, int, int) – souris déplacée ■ public boolean mouseEnter(Event, int, int) – souris entre dans la zone de l’applet ■ public boolean mouseExit(Event, int, int) – souris sort de la zone de l’applet ■ public boolean mouseDrag(Event, int, int) – souris déplacée avec bouton appuyé Gestion des événements clavier ■ public boolean keyDown(Event, int) – touche appuyée ■ public boolean keyUp(Event, int) – touche lâchée Gestion des événements ■ ■ public boolean action(Event, Object) Exemple 1: public boolean action(Event e, Object c) { if (e.target == boutonOK) …; return true; if (e.target == listeChoix) …; return true; return false; } Événements « actionListener » ■ ■ ■ ■ Autre moyen : actionListener (gestionnaire d ’actions) Un gestionnaire d ’action = objet implémentant l ’interface ActionListener (dans le paquetage java.awt.event) Association à une widget avec la méthode addActionListener() Possibilités d ’associer plusieurs gestionnaires d ’action à une widget. Exemple Extrait d ’une classe (avec import java.awt.event.*; ) Button b4 = new Button("Envoyer..."); b4.addActionListener(new actionBouton()); Gestion de l ’événement class actionBouton implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Bouton Appuyé"); } }