Comment faire un Composite étendre à la largeur maximale d'un autre Composite

J'ai besoin de reformuler la question un peu.

Mise à jour de la question ci-dessous.

J'ai un Composite qui contient:

myjpanel.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));

Il contient la suite de trois panneaux:

Composite avec taille fixe 'x' et 'y'

Composite avec pas de taille fixe

Composite avec pas de taille fixe et de petite hauteur

La deuxième Composite contient un JTable il élargit pour remplir toute la hauteur et pousse le panneau du bas, tout en bas, comme prévu.

Comme ceci:

t
t
m
m
m
m
m
b

t = panneau supérieur,
m = panneau du milieu,
b = en bas du panneau.

Qui fonctionne. Mais le panneau de fond n'a pas envie de remplir la totalité de la largeur du parent qui est un problème.

ttt
mmm
 b 

Je voudrais que ce soit, lorsque le panneau remplit toute la largeur:

ttt
mmm
bbb

ou cette, où le panneau de fond est à gauche centré:

ttt
mmm
b

Vieille question ci-dessous:

J'ai un Composite qui contient:

.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));

À l'intérieur, il ya plus de trois JPanels. Les deux premiers sont de taille fixe et celui du milieu n'est pas.

Je veux que mon panneau du bas pour ne prendre que la hauteur des besoins, mais utilise toute la largeur disponible de l'extérieur Composite.

J'ai essayé d'utiliser de la colle, mais en vain, et je préfère ne pas définir préféré et min/max de tailles.
Est-il un moyen de dire la composante de "Remplir l'ensemble des parents de la largeur" en utilisant simplement le layout manager et cadre. Je préfère ne pas commencer à faire des hacks comme paramètre de tailles et de redéfinition des méthodes.

Remarque: je ne peux pas mettre de la colle ou de remplissage dans le panneau intérieur, seul le panneau extérieur et son directeur de disposition peut être modifiée.

Tentative 1:

À l'aide de myPanel.setLayout(new GridLayout(3, 1)); n'a pas produit les résultats escomptés. Il a fait une grille comme ceci:

XX
 X

Mais je m'y attendais:

X
X
X

Tentative 2:

À l'aide de myPanel.setLayout(new GridLayout(0,1)); n'a pas produit les résultats escomptés. Il a fait une grille comme ceci:

x
x
x

Mais tous les panneaux étaient de la même taille, en ignorant les contraintes.

Son non redimensionnable pour le moment. Et déjà là
Je suis à l'aide de BoxLayout comme il est dit dans la question, mais je vais essayer un borderlayout à la place. Juste un instant

OriginalL'auteur Martin Nielsen | 2013-01-10