………..
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…
Les containers spécialisés
●containers qui imposent un layout manager, et parfois des fils
– exemple: JFrame impose unfils 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…
La Box
●Box (pas de J) est presque équivalente à un JPanel muni d’un BoxLayout
●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 Box box=new Box(BoxLayout.Y_AXIS);
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 newLeftComponent,
Component newRightComponent)
Le JTabbedPane
●container à onglets
●ajout des composants avec:
– addTab(String title,Component c)
●possible de définir le placement des onglets avec:
– set/getTabPlacement
●que faire quand ça déborde ?
– set/getTabLayoutPolicy
Le JTabbedPane
●si on veut gérer soi-même l’onglet, il faut utiliser:
– setTabComponentAt(int index,Component c)
●exemple: container avec label+2 boutons personnalisés
Le JScrollPane
●permet d’afficher un composant à sa taille préférée, sans le réduire s’il n’y a pas assez d’espace
●le composant est passé au constructeur:
– JScrollPane(Component view, int vsbPolicy, int hsbPolicy)
–les 2 autres paramètres régissent la présence des barres de défilement
●pour que ça fonctionne, le composant inséré doit implémenter Scrollable:
– composants textes, listes, tables, arbres
●pour un composant texte qui gère le multiligne, il faut ruser:
– soit le mettre au centre d’un panel avecun BorderLayout
– soit redéfinir
getScrollableTracksViewportWidth() pour toujours retourner false
Le JLayeredPane
●affiche les composants par couches
●chaque couche est codée par un Integer:
add(biniou,14) ⇒ add(biniou,Integer.valueOf(14))
●par défaut, il n’y a pas de layout manager pour déterminer la taille des composants contenus dans le JLayeredPane ..
– il faut donc enécrire un, maison saitfaire ..
(cf. fr.umlv.ig.lesson1.LayeredLayoutManager)