2 votes

Swing : moyen le plus simple d'aligner la largeur des composants [dynamiques][statiques][dynamiques] ?

Quel est le moyen le plus simple, en Java Swing standard, d'aligner trois composants de manière à ce que :

  • el largeurs dynamiques de Component1 y Component3 sont ajusté pour être égal ,

  • tandis que Component2 (qui se situe entre les deux) a constant la largeur ?

Imaginons que nous ayons un panneau JPanel redimensionnable (par exemple à l'intérieur d'un JFrame).

Une petite largeur devrait ressembler à ceci :

[----------------whole JPanel----------------]
[--Component1--] [Component2] [--Component3--]

La grande largeur devrait ressembler à ceci :

[------------------------whole JPanel------------------------]
[------Component1------] [Component2] [------Component3------]

Note : Je viens de faire un essai et de vérifier avec GroupLayout pendant trop longtemps.

1voto

01es Points 2891

Que pensez-vous de la MigLayout manager ? Il ne fait pas partie du JRE, mais c'est un excellent gestionnaire de mise en page, qui peut facilement produire la mise en page dont vous avez besoin avec moins de code que GridBag. Consultez leur Démo .

Je n'ai pas pu résister à l'envie de poster le sac totalement quadrillé dessin animé... profitez-en ( :

1voto

RD1 Points 4458

Une option consiste à utiliser un GridBagLayout . Un petit extrait rapide pour vous aider à démarrer :

GridBagConstraints gbc;
final int A_CENTER = GridBagConstraints.CENTER;  // anchor: center
final int F_NONE = GridBagConstraints.NONE;  // fill: none
final int F_DX = GridBagConstraints.HORIZONTAL;  // fill: dx only
final Insets IN_0 = new Insets(0, 0, 0, 0);  // empty insets

setLayout(new GridBagLayout() );
gbc = new GridBagConstraints(0, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0);
add(new JButton("test1"), gbc);
gbc = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, A_CENTER, F_NONE, IN_0, 0, 0);
add(new JButton("test2"), gbc);
gbc = new GridBagConstraints(2, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0);
add(new JButton("test1"), gbc);

Il est évident que vous pouvez faire beaucoup plus avec un GridBag et que vous devrez le peaufiner pour obtenir exactement ce que vous voulez voir, mais cela devrait vous permettre de commencer.

Le cinquième paramètre du constructeur du GBC est un poids pour l'étirement dans la direction x. Le fait de les rendre égaux et de forcer le composant central à ne pas s'étirer (F_NONE) fait le sale boulot.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X