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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit einem
BorderLayout
und dieb
panel ist in derSOUTH
oderPAGE_END
es füllt die gesamte Breite.Der einfachste Weg wäre, um einen anderen layout-manager wie
GridLayout
dass automatisch die Größe der Komponenten zu füllen, den übergeordneten container.new GridLayout(0, 1);
Können Sie GridBagLayout, für, die, mit
Einer Beispiel für Eure Hilfe, im Zusammenhang mit GridBagLayout.
Als fragte in den Kommentaren, damit zu
Den BoxLayout ist eine weitere alternative, dass im Einklang mit den bevorzugten Größen der Komponenten. Sie können versuchen, wenn GridBagLayout ist das hart 🙂
Code mit dem GridBagLayout, für mehr Klarheit :
AUSGABE :
Hier einige custom JPanel verwendet wird, um zu expandieren und schrumpfen mit statischen input-Werte.
Java timer für Verzögerung und Geschwindigkeit, bis das display die Zeit.
//Gib die Höhe und Breite für das panel ,dass das, was wir darstellen wollen als Folie Höhe.
//Letzteres timer mit einigen statischen Werte - Medium speed)
/**Funktion für die Verkleinerung von Jpanel
*
*/
//Höhe für dia bis zur höchsten position
}
//Deklarieren der Klasse und mit schrumpfenden onclick-Ereignis