Wie man ein JPanel zu erweitern, um die max Breite, die in einem anderen JPanel

Fühle ich mich muss ich formuliere die Frage ein wenig.

Aktualisiert, Frage unten.

Ich habe ein JPanel enthält:

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

Es enthält die folgenden drei panels:

JPanel mit fester Größe 'x' und 'y'

JPanel mit keine Feste Größe

JPanel mit keine Feste Größe und geringe Höhe

Dem zweiten JPanel enthält ein JTable also es dehnt sich über die gesamte Höhe und schiebt den unteren Bereich den ganzen Weg hinunter, als erwartet.

Wie diese:

t
t
m
m
m
m
m
b

t = top-panel,
m = Mitte,
b = Unterseite.

Funktioniert. Aber die Unterseite fühlt sich nicht wie füllen die gesamte Breite des übergeordneten Elements ist ein problem.

ttt
mmm
 b 

Ich würde entweder wie dieser, wo das panel füllt die gesamte Breite:

ttt
mmm
bbb

oder so, wo die Bodenplatte ist Links zentriert:

ttt
mmm
b

Alte Frage unten:

Ich habe ein JPanel enthält:

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

Innerhalb it gibt es drei weitere JPanels. Die ersten beiden sind von fester Größe und die Mitte eben nicht.

Ich möchte meine Bodenplatte, nehmen Sie nur die Höhe, die es braucht, nutzt aber alle verfügbaren Breite des äußeren JPanel.

Habe ich versucht, mit Kleber, aber ohne Erfolg, und ich würde lieber nicht setzen bevorzugt und min/max-Größen.
Gibt es eine Möglichkeit zu sagen, die Komponente, um "Füllen den gesamten Eltern der Breite" verwenden Sie nur den layout-manager und Rahmen. Ich würde das eher nicht tun-hacks wie das setzen von Größen-und überschreiben von Methoden.

Hinweis: ich kann nicht legen Sie keine Kleber oder Füllstoff in der inneren Platte, nur das Außenblech und seine layout-manager geändert werden kann.

Versuch 1:

Mit myPanel.setLayout(new GridLayout(3, 1)); nicht die erwarteten Ergebnisse liefern. Es machte ein raster wie dieses:

XX
 X

Aber ich erwartete:

X
X
X

Versuch 2:

Mit myPanel.setLayout(new GridLayout(0,1)); nicht die erwarteten Ergebnisse liefern. Es machte ein raster wie dieses:

x
x
x

Aber alle Platten waren von der gleichen Größe, ignorieren die Beschränkungen.

  • Seine non-resizable im moment. Und schon ist es
  • Ich bin mit BoxLayout so wie es in der Frage, aber ich werde versuchen ein borderlayout statt. Nur ein moment
Schreibe einen Kommentar