Documente Academic
Documente Profesional
Documente Cultură
AWT et Swing
AWT et Swing
Button
Canvas
Component
Label
Panel List
Window
Scrollbar
Frame
TextArea
TextField
FileDialog
AWT et Swing
Panel. Un Frame reprsente une fentre de haut niveau avec: un titre, une bordure des angles de redimensionnement.
AWT et Swing
mthode add() :
Panel p = new Panel(); Button b = new Button(); p.add(b);
une taille prfre que lon obtient avec getPreferredSize() une taille minimum que lon obtient avec getMinimunSize() une taille maximum que lon obtient avec getMaximunSize()
AWT et Swing
AWT et Swing
AWT et Swing
AWT et Swing
FlowLayout
OK Ouvrir Redimensionnement OK Ouvrir Fermer
Fermer
plus visible
OK
Ouvrir
Redimensionnement
OK
Ouvrir
Fermer
Fermer
AWT et Swing
10
FlowLayout
Redimensionnement
Redimensionnement
AWT et Swing
11
FlowLayout
Redimensionnement
Redimensionnement
AWT et Swing
12
BorderLayout
BorderLayout divise son espace de travail en cinq zones
gographiques :
North South East West Center. Exemple
AWT et Swing
13
BorderLayout
Division de lespace avec le BorderLayout
NORTH
WEST
CENTER
EAST
SOUTH
AWT et Swing
14
BorderLayout
import java.awt.*; public class EssaiBorderLayout extends Frame { private Button b1,b2,b3,b4, b5; public EssaiBorderLayout() { setLayout(new BorderLayout()); b1 = new Button ("Nord"); b2 = new Button ("Sud"); b3 = new Button ("Est"); b4 = new Button ("Ouest"); b5 = new Button ("Centre"); this.add(b1, BorderLayout.NORTH); this.add(b2 , BorderLayout.SOUTH); this.add(b3, BorderLayout.EAST); this.add(b4, BorderLayout.WEST); this.add(b5, BorderLayout.CENTER); } public static void main (String args []) { EssaiBorderLayout essai = new EssaiBorderLayout(); essai.pack (); essai.setVisible(true) ; }}
AWT et Swing
15
BorderLayout
N Redimensionnement O C S E O
AWT et Swing
16
BorderLayout
Redimensionnement
Redimensionnement
AWT et Swing
17
GridLayout
Dcoupage de la zone d'affichage en: lignes e colonnes. Les 2 paramtres sont les ranges et les colonnes. Construction d'un GridLayout : new GridLayout(3,2);
nombre de lignes nombre de colonnes
AWT et Swing
18
GridLayout
import java.awt.*; public class AppliGridLayout extends Frame { public AppliGridLayout() { super("AppliGridLayout"); this.setLayout(new GridLayout(3,2)); for (int i = 1; i < 7; i++) add(new Button(Integer.toString(i))); this.pack(); this.show(); } public static void main(String args[]) { AppliGridLayout appli = new AppliGridLayout(); } }
AWT et Swing
19
GridLayout (4)
Lors dun redimensionnement les composants changent
1 3 5
2 4 6
Redimensionnement
1 3 5
2 4 6
AWT et Swing
20
GridLayout (5)
Redimensionnement
AWT et Swing
21
de cartes.
La prsentation CardLayout permet plusieurs composants de
partager le mme espace d'affichage de telle sorte que seul l'un d'entre eux soit visible la fois. Pour ajouter un composant un conteneur utilisant un CardLayout il faut utiliser add(String cle, Component monComposant) Permet de passer de l affichage d un composant un autre en appelant les mthodes first, last, next, previous ou show
AWT et Swing
22
GridBagLayout (1)
Le gestionnaire GridBagLayout fournit des fonctions de
prsentation complexes
bases sur une grille dont les lignes et les colonnes sont de taille
variables. permet des composants simples de prendre leur taille prfre au sein d'une cellule, au lieu de remplir toute la cellule. permet aussi l'extension d'un mme composant sur plusieurs cellules.
Le GridBagLayout est compliqu grer. Dans la plupart des cas, il est possible dviter de lutiliser en associant des objets Container utilisant des gestionnaires diffrents.
AWT et Swing
23
GridBagLayout (2)
Le gestionnaire GridBagLayout est associ un objet
GridBagConstraints
lobjet GridBagConstraints dfinit des contraintes de
positionnement, dalignements, de taille, etc. dun composant dans un conteneur gr par un GridBagLayout. On associe chaque composant que lon place dans le GridBagLayout avec un objet GridBagConstraints
Un mme objet GridBagConstraints peut-tre associ plusieurs
composants. Dfinir les objets GridBagConstraints en spcifiant les diffrents paramtres est assez fastidieux Voir la doc
AWT et Swing
24
AWT et Swing
25
Dautres gestionnaires?
On peut imposer un objet
composants manuellement en indiquant leur position absolue dans le repre de la fentre. Cest viter, sauf dans des cas particuliers,.
AWT et Swing
26
Rcapitulatif
FlowLayout Flux : composants placs les uns derrire les autres BorderLayout Ecran dcoup en 5 zones ( North , East , Center )
West , South ,
GridLayout Grille : une case par composant, chaque case de la mme taille CardLayout Onglets : on affiche un lment la fois GridBagLayout Grille complexe : plusieurs cases par composant
AWT et Swing
27
l'interaction de l'utilisateur.
AWT et Swing
28
l'interface EventListener (ou une interface fille). Une source d'vnements est un objet pouvant recenser des objets couteurs et leur envoyer des objets vnements.
Lorsqu'un vnement se produit, la source d'vnements envoie un objet vnement correspondant tous ses couteurs. Les objets couteurs utilisent alors l'information contenue dans l'objet vnement pour dterminer leur rponse.
AWT et Swing
29
AWT et Swing
30
interfaces couteur.
Par exemple une classe hritant de Frame implmentera les
interfaces MouseMotionListener (pour les dplacements souris) et MouseListener (pour les clics souris).
AWT et Swing
31
paramtres des fonctions correspondantes peut contenir des paramtres intressants pour l'application.
Par exemple, getX() et getY() sur un MouseEvent retournent les
coordonnes de la position du pointeur de la souris. Une information gnralement utile quelques soit le type dvnement est la source de cet vnement que lon obtient avec la mthode getSource().
AWT et Swing
32
AWT et Swing
33
package java.awt.event. Pour chaque catgorie d'vnements, il existe une interface qui doit tre dfinie par toute classe souhaitant recevoir cette catgorie dvnements.
Cette interface exige aussi qu'une ou plusieurs mthodes soient
dfinies. Ces mthodes sont appeles lorsque des vnements particuliers surviennent.
AWT et Swing
34
Key
KeyListener
Focus
FocusListener
Mthodes actionPerformed (ActionEvent) itemStateChanged (ItemEvent) mouseDragged (MouseEvent) mouseMoved (MouseEvent) mousePressed (MouseEvent) mouseReleased (MouseEvent) mouseEntered (MouseEvent) (MouseEvent) mouseExited mouseClicked keyPressed (KeyEvent) keyReleased (KeyEvent) keyTyped (KeyEvent) focusGained (FocusEvent) focusLost (FocusEvent)
AWT et Swing
35
Adjustment Component
AdjustmentListener ComponentListener
Window
WindowListener
Container Text
ContainerListener TextListener
adjustmentValueChanged (AdjustmentEvent) componentMoved (ComponentEvent)componentHiddent (ComponentEvent)componentResize (ComponentEvent)componentShown (ComponentEvent) windowClosing (WindowEvent) windowOpened (WindowEvent) windowIconified (WindowEvent windowDeiconified (WindowEvent) windowClosed (WindowEvent) windowActivated (WindowEvent) windowDeactivated (WindowEvent) componentAdded (ContainerEvent) componentRemoved(ContainerEvent) textValueChanged (TextEvent)
AWT et Swing
36
AWT et Swing
37
AWT et Swing
38
AWT et Swing
39
Implmentation de l'interface ActionListener On enregistre lcouteur devt action auprs de lobjet source "b"
Lorsque l'on clique sur le bouton dans l interface, le titre de la fentre change
AWT et Swing
40
e.getSource()" renvoie l'objet source de lvnement. On effectue un test sur les boutons (on compare les rfrences)
AWT et Swing
41
Implmenter cette interface impose limplmentation de bcp de mthodes La fentre est son propre couteur WindowClosing() est appel lorsque l'on clique sur la croix de la fentre "System.exit(0)" permet de quitter une application java
AWT et Swing
42
uvre
possdant le plus de mthodes, en dfinissant un corps vide pour chacune d'entre elles. Plutt que d'implmenter l'intgralit d'une interface dont une seule mthode est pertinente pour rsoudre un problme donn, une alternative est de sous-classer l'adapteur appropri et de redfinir juste les mthodes qui nous intressent.
Par exemple pour la gestion des vnements fentres...
AWT et Swing
43
AWT et Swing
44
AWT et Swing
45
Frame f = new Frame("Machin") f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });
AWT et Swing
46
(case cocher) CheckboxGroup Label Choice (Slecteur) List Scrollbar (barre de dfilement) TextField (zone de saisie d1 ligne) TextArea (zone de saisie multilignes)
AWT et Swing
47
AWT et Swing
48
AWT et Swing
49
AWT et Swing
50
List l =new List (4, false); l.add("item1"); nombre d'items visibles (ici 4 lments seront visible en mme temps) slections multiples possibles ou non. Ici, avec la valeur false, non possible
AWT et Swing
51
AWT et Swing
52
TextArea t = new TextArea ("Hello !", 4, 30,TextArea.SCROLLBARS_BOTH); add(t); Valeur constante prcisant la prsence ou labsence de scrollbar
Texte par dfaut mis dans le TextArea Nombre de lignes Nombre de colonnes (en nbre de caractres)
AWT et Swing
53
AWT et Swing
54
un Frame), grce la mthode add(...). Pour afficher un PopupMenu, il faut utiliser la mthode show(...).
AWT et Swing
55
AWT et Swing
56
AWT et Swing
57
AWT et Swing
58
java.awt.Color.
La gamme complte de couleurs prdfinies est liste dans la page de
AWT et Swing
59
Les tailles en points doivent tre dfinies avec une valeur entire.
AWT et Swing
60
show() pour la rendre visible (il existe une mthode hide() pour la cacher).
AWT et Swing
61
AWT et Swing
62
AWT et Swing
63
horizontales
Un ScrollPane ne peut contenir qu'un seul composant Ce conteneur nest pas trs intressant mais est cit pour
information.
SWING
AWT et Swing
65
AWT. L'ambition de Sun est que, progressivement, les dveloppeurs ralisent toutes leurs interfaces avec Swing et laissent tomber les anciennes API graphiques.
AWT et Swing
66
component) s'appuie sur le gestionnaire de fentres local, celui de la machine sur laquelle le programme s'excute.
awt ne comporte que des composants lourds. Ce choix technique a t initialement fait pour assurer la portabilit.
AWT et Swing
67
AWT et Swing
68
fentre local mais n'en est pas un : un composant lger mule les composants de gestionnaire de fentre local. Un bouton lger est un rectangle dessin sur une zone de dessin qui contient une tiquette et ragit aux vnements souris. Tous les composants de Swing, excepts JApplet, JDialog, JFrame et JWindow sont des composants lgers.
AWT et Swing
69
Atouts de Swing
Plus de composants, offrant plus de possibilits. Les composants Swing dpendent moins de la plate-
forme :
Il est plus facile d'crire une application qui satisfasse au slogan
"Write once, run everywhere" Swing peut pallier aux faiblesses (bogues ?) de chaque gestionnaire de fentre.
AWT et Swing
70
ayant l'aspect d'une application Motif. Ce choix peut mme intervenir en cours d'excution.
AWT et Swing
71
Un inconvnient est que pour des raisons de copyright tous les look-and-feel ne sont pas disponibles sur toutes les plate-formes.
AWT et Swing
72
Conventions de nommage
Les composants Swing sont situs dans le paquetage
1.1 (par opposition aux paquetages standards java) sont regroups sous javax.
Cette convention permet de tlcharger ces paquetages dans un
environnement navigateur avec une machine virtuelle java 1.1. Ces navigateurs ne sont, en effet, pas autoriss tlcharger des paquetages dont le nom commence par java.
AWT et Swing
73
AWT et Swing
74
AWT et Swing
75
AWT et Swing
76
AWT et Swing
77
AWT et Swing
78
AWT et Swing
79
Le JFrame Un objet JFrame a un comportement par dfaut associ une tentative de fermeture de la fentre.
Contrairement la classe Frame, qui ne ragissait pas par dfaut, l'action de
fermeture sur un JFrame rend par dfaut la fentre invisible. Ce comportement par dfaut peut tre modifi par setDefaultCloseOperation().
AWT et Swing
80
import javax.swing.*; public class Simple { public static void main(String[] args) { JFrame cadre = new JFrame("Ma fenetre"); cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); cadre.setSize(300, 200); cadre.setVisible(true); } dtermine que lapplication sera termine } Lorsquon fermera la fentre
AWT et Swing
81
JFrame d'un JFrame n'est plus confondu avec le cadre lui-mme. jLe conteneur
Il possde une couche de contenu, dans laquelle on peut ajouter les composants graphiques et dont on peut changer le gestionnaire de prsentation. Cette couche est obtenue par la mthode getContentPane();
Avec AWT Frame monFrame = new Frame ("Mon Frame"); Button monBouton = new Button ("Mon Bouton"); monFrame.add(monBouton);
Avec Swing JFrame monFrame = new JFrame ("Mon Frame"); JButton monBouton = new JButton ("Mon Bouton"); Container panneauContenu = monFrame.getContentPane(); panneauContenu.add(monBouton);
AWT et Swing
82
AWT et Swing
83
AWT et Swing
84
AWT et Swing
85
caractres
AWT et Swing
86
AWT et Swing
87
AWT et Swing
88
Reprsenter des listes : classe JList Reprsenter des arbres : classe JTree Reprsenter des tables (Excel) : classe JTable Ces quelques nouveauts ne sont qu'un aperu de ce
prsentation, de nouveaux vnements graphiques que lon ne peut prsenter et dtailler dans le cadre de ce cours.
AWT et Swing
90
(par exemple, quelque chose qui cachait une partie du composant a t dplac. Cette partie nouveau visible doit tre repeinte)
Rendu dclench par lapplication Le composant dcide de se repeindre pour reflter un changement dans son tat interne
AWT et Swing
91
AWT et Swing
92
AWT et Swing
93
inappropri (par exemple avant que le composant ne soit visible ou ait accs un objet Graphics valide)
AWT et Swing
94
AWT et Swing
95
systme
lAWT dtermine si le re-dessin concerne tout ou partie du
AWT et Swing
96
application
le programme dtermine si le re-dessin concerne tout ou partie du
composant en rponse un changement dtat interne le programme appelle repaint() sur le composant qui a besoin d tre repeint. lAWT provoque lappel de la mthode update() sur le composant si ce composant ne redfinit pas update(), limplmentation par dfaut dupdate() nettoie larrire plan du composant et appelle paint() .
AWT et Swing
97
AWT et Swing
98
AWT et Swing
99
AWT et Swing
100
Par consquent, un programme Swing devrait redfinir paintComponent() et non paint() Gnralement, il nest pas ncessaire de redfinir les 2 autres mthodes.