Swing Dreiteilung

Status
Nicht offen für weitere Antworten.

H2SO4

Bekanntes Mitglied
Hallo!

Welches Laout bietet sich hierfür an:

Mein Fenster ist immer im Vollbildmodus und beinhaltet drei JPanels, die unter einander angeordnet und die ganze Breite einnehmen sollen. Mein Problem ist die Höhe. Ich kriege es nicht hin, dass das obere und untere Panel etwa 15% der Bildschirmhöhe einnehmen und das mittlere 70. Wie und mit welchem Layout sollte ich das machen?
 

Verjigorm

Top Contributor
GradBagLayout, da kannste mit den Gewichtungen genau sowas erreichen

Hier im Forum gabs dasselbe Beispiel schonmal, allerdings als Links-Mitte-Rechts, was ja fast dasselbe ist
 

icarus2

Top Contributor
Vielleicht hilft dir der Code etwas, ist nicht mehr das Neuste, sollte aber om Stil her glaub ich nicht allzu schlecht sein. Das sollte genau das sein, was du gerne haben möchtest vom Layout her haben möchtest.

[Java]
//Constructor
GridBagTest(){

GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();

c = getContentPane();
c.setLayout(gbl);

left = new JPanel();
left.setBorder(new TitledBorder("left"));
gbc = makeGbc(0,0,1,1);
gbc.weightx = 0.15;
gbc.weighty = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.NORTHWEST;
gbl.setConstraints(left, gbc);

middle = new JPanel();
middle.setBorder(new TitledBorder("middle"));
gbc = makeGbc(1,0,1,1);
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbl.setConstraints(middle, gbc);

bottom = new JPanel();
bottom.setBorder(new TitledBorder("bottom"));
gbc = makeGbc(0,1,2,1);
gbc.weightx = 1;
gbc.weighty = 0.15;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbl.setConstraints(bottom, gbc);



c.add(left);
c.add(middle);
c.add(bottom);
}

//Help method to create the gbc
protected GridBagConstraints makeGbc(int x, int y, int width, int height){

GridBagConstraints gbc = new GridBagConstraints();

gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;

gbc.insets = new Insets(3,3,3,3);

return gbc;
}
[/Java]



Ich habe einfach den Konstruktor, zusammen mit der Hilfsmethode, damit es weniger Code gibt im Konstruktor, gepostet.
 

Marco13

Top Contributor
GridBagLayout geht. Einfacher wäre es mit den diversen speziellen Implementierungen (TableLayout, PercentLayout) aber die gehören eben nicht zur Standard-API.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben