Layoutmanager - Grösse JPane()
JLearner
- java
Hallo zusammen
Gestern hatte mir Slyh bei einem Problem mit dem Layoutmanager weiterhelfen können. Da es nun ein neues Problem gibt, gibts auch ein neuer Thread.
Situation: Ich habe in meinem JInternalFrame ein GridLayout zugewiesen. Diesem GridLayout wurde wiederum 2 JPanel zugewiesen. Diese zwei JPanel haben wiederum ein GridBoxLayout. So kann ich im ersten JPanel die Formularfelder und im zweiten JPanel darunter die Buttons anzeigen lassen (Schön zentriert).
Problem: Die beiden JPanels teilen Sie die verfügbare grösse exakt und das sieht etwa so aus
-----------------
Panel1 (mit Formularfeldern)
-----------------
Panel2 (mit Buttons)
-----------------
Ich möchte aber nicht dass das JPanel mit den Formularfeldern gleich gross ist wie das JPanel mit den Buttons. Das ergibt riesige Buttons. Nun habe ich versucht den JPanel's mit setSize() und setMaximumSize() eine Grösse zuzuweisen. Das wird aber ignoriert. Wie kann ich das lösen, damit mein Frame so aussieht?:
-----------------
Panel1 (mit Formularfeldern)
-----------------
Panel2 (mit Buttons)
-----------------
Das heisst ich möchte einfach das Verhältnis ändern...!
Gruss JLearner!
Hallo,
Ich möchte aber nicht dass das JPanel mit den Formularfeldern gleich gross ist wie das JPanel mit den Buttons. Das ergibt riesige Buttons. Nun habe ich versucht den JPanel's mit setSize() und setMaximumSize() eine Grösse zuzuweisen. Das wird aber ignoriert. Wie kann ich das lösen, damit mein Frame so aussieht?:
Nimm für das InternalFrame kein GridLayout. Das GridLayout macht alle
Zellen gleich groß. Und da die Komponenten in der Zelle so groß wie
die Zelle wird, sind auch die Komponenten alle gleich groß.
Nimm für das InternalFrame auch wieder ein GridBagLayout. Setze dabei
die Constraint-Variable "weighty" für das obere Panel auf 1 und für
das untere Panel auf 0.
Vermutlich tut es statt dem GridBagLayout auch ein BorderLayout im
InternalFrame. Das dürfte schneller sein.
Platziere das obere Panel ins Zentrum (CENTER) und das untere Panel
in den Süden (SOUTH).
Komponenten im Norden und Süden werden in ihrer Breite auf die
Gesamtbreite ausgedehnt, während sie in der ihrer Höhe nur die
bevorzugte Größe einnehmen. Komponenten im Westen und Süden behalten
ihre Breite, nehmen aber die gesamte Höhe ein. Die Komponente in der
Mitte nimmt den restlichen Platz ein. Da du nur noch eine Komponente
unten hast, wird das obere Panel die gesamte Breite und restliche
Höhe einnehmen.
Gruß
Slyh
Hallo Slyh
Habe ein BorderLayout verwendet...und es klappt! Gruss JLearner