Swing
Containers, menus, barre d'outils et actions
Sébastien Paumier
paumier@univ-mlv.fr
Illustrations provenant du site http://tux.crystalxp.net/
1
Les containers
●
●
rappel: tous les composants Swing sont des containers potentiels, même s'il vaut mieux ne pas essayer pour la plupart d'entre eux règle d'or: on ne peut pas ajouter un même composant plusieurs fois:
–
–
●
ni dans le même container ni dans des containers différents
JPanel est le container le plus simple, mais il y en a d'autres...
paumier@univ-mlv.fr
2
Les containers spécialisés
●
containers qui imposent un layout manager, et parfois des fils
–
●
●
●
exemple: JFrame impose un fils unique
JRootPane
faciles à utiliser pas besoin d'en définir de nouveaux, à moins d'un besoin très particulier attention: on n'ajoute pas forcément les composants avec le add classique...
paumier@univ-mlv.fr
3
La Box
●
Box (pas de J) est presque équivalente à un JPanel muni d'un BoxLayout
Box box=new Box(BoxLayout.Y_AXIS);
●
●
remarque: l'orientation passée au constructeur est un champ de BoxLayout et non de Box attention: container transparent, ne pas l'utiliser comme content pane
paumier@univ-mlv.fr
4
La Box
à n'utiliser que quand on veut vraiment de la transparence Box b=new Box(BoxLayout.Y_AXIS);
b.add(new JRadioButton("Alpha"));
b.add(new JRadioButton("Beta"));
b.add(new JRadioButton("Gamma"));
b.add(Box.createVerticalGlue());
/* This has no effect on a Box! */
b.setOpaque(true);
b.setBorder(BorderFactory.createTitledBorder("Box"));
paumier@univ-mlv.fr
5
Le JSplitPane
●
●
●
container à 2 zones séparées par une barre de redimensionnement ne peut pas réduire un composant à moins de sa taille minimum ne peut recevoir que 2 composants qui sont passés au constructeur:
public JSplitPane(int newOrientation, boolean newContinuousLayout,
Component