Suche den passenden LayoutManager

mariusmeier

Mitglied
Hallo zusammen

Ich suche folgendes Layout:

layoutspecific8yw8.jpg


Erklärung: Die grösse des Panels ist vorgegeben. Ich will nun mehrere Komponente in das Panel laden. Diese Components dürfen in x-Richtung den ganzen Platz einnehmen (Auch wenn Fenster vergrössert wird). Jedoch in y-Richtung soll die Komponente nur delta-Y hoch sein.
Wie realisiert man das? Mit einem BoxLayout vielleicht. Wenn ja wie stelle ich die gegebenen Bedingungen ein?

MFG
 
Wenn man ein BoxLayout verwendet, kann man die Breite vorgeben, indem man der Äußeren Component eine Maximalbreite gibt, und den inneren sagt, dass sie gerne breiter sein wollen sollen. Die Höhe würden die inneren dann eigentlich selbst entscheiden, mit ihrer PreferredSize. Oder soll das auch die Äußere bestimmen können? Dann würde es ggf. etwas frickeliger werden, bzw. man müßte ein anderes Layout verwenden....
 
Ich begreife nicht ganz was du mit der Äusseren Komponente meinst? Denkst du da ans Panel?
Also du sagst mir, dass ich die WIDTH so einstellen kann, dass sich diese an das Panel einstellt. Aber wie sieht das mit der Height aus ? Wenn ich mit setPreferredSize dies einstelle, dann würde ich ja auch die WIDTH limitieren ??

MFG
 
Also ich habs mit dem GridBagLayout gelöst. Man kann dort einstellen, dass die Komponente nur Horizontal wachsen soll. Mit setPreferredSize() stellt man die Komponente auf die gewünschte Höhe ein. Danach füllt man das Panel mit den Komponenten. Am Schluss fügt man ein leeres Panel ein, welches BOTH als Wachstumsparameter erhält und für die weightX und weightY habe ich einen sehr grossen Wert gewählt (Bsp. 1000). Nun hat man das gewünschte Ergebnis!

Code:

Java:
for(i=0;i<dpComp.length;i++) {
//In der for-Schlaufe werden Komponenten hinzugefügt
lcdPanel.add(dpComp[i], new GridBagConstraints(0, i+1, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
}

//Ausserhalb der for-Schlaufe wird das leere Label eingefügt
lcdPanel.add(lbFill, new GridBagConstraints(0, i+1, 1, 1, 1.0, 1000.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

MFG
 
Ja, wenn jemand fragt: "Mit welchem Layoutmanager kann man...."
dann kann man ihn unterbrechen, und sagen: Mit dem GridBagLayout (und vielleicht noch den Klassiker Totally Gridbag – madbean hinterherschieben 😀 ). Für die meisten Sachen sind andere Layouts "einfacher", aber wenn's jetzt geht ist's ja OK.
 

Neue Themen


Zurück
Oben