Vous voulez jouer avec layout managers pour contrôler le positionnement et le dimensionnement des contrôles dans votre JPanel
. Les gestionnaires de mise en page sont chargés de placer les contrôles, de déterminer où ils vont, leur taille, l'espace qui les sépare, ce qui se passe lorsque vous redimensionnez la fenêtre, etc.
Il existe plusieurs types de gestionnaires de mise en page qui permettent chacun vous de mettre en page les contrôles de différentes manières. Le gestionnaire de disposition par défaut est FlowLayout
, ce qui, comme vous l'avez vu, place les composants les uns à côté des autres de gauche à droite. C'est le plus simple. D'autres gestionnaires de disposition commune sont:
GridLayout
- arrange les composants dans une grille rectangulaire avec des lignes de taille égale et de colonnes
BorderLayout
- a une composante principale dans le centre et jusqu'à quatre composants environnants ci-dessus, ci-dessous, à gauche et à droite.
GridBagLayout
- Big Bertha de tous les gestionnaires de mise en page intégrés, il est le plus souple, mais aussi le plus compliqué à utiliser.
Vous pouvez, par exemple, utiliser un BoxLayout pour mettre en forme les étiquettes.
BoxLayout
empile ses composants les uns sur les autres ou les place dans une rangée - votre choix. Vous pourriez le considérer comme une version de FlowLayout
, mais avec une plus grande fonctionnalité. Voici une photo d'une application qui montre comment utiliser BoxLayout
pour afficher une colonne de composants centrée:
BoxLayout screenshot http://java.sun.com/docs/books/tutorial/figures/uiswing/layout/BoxLayoutDemo.png
Un exemple de code à l'aide BoxLayout
serait:
JPanel pMeasure = new JPanel();
....
JLabel economy = new JLabel("Economy");
JLabel regularity = new JLabel("Regularity");
pMeasure.setLayout(new BoxLayout(pMeasure, BoxLayout.Y_AXIS));
pMeasure.add(economy);
pMeasure.add(regularity);
...
Copie possible de [ajouter des contrôles verticalement au lieu d'utiliser horizontalement la disposition de flux] (http://stackoverflow.com/questions/13510641/add-controls-vertically-instead-of-horizontally-using-flow-layout) – Abhijeet