Verständnisproblem mit Layoutmanagern.

Status
Nicht offen für weitere Antworten.

deleted

Bekanntes Mitglied
Abend,

ich habe folgendes Problem:
Ich habe mir ein kleines Swing Programm geschrieben.
Es funktioniert soweit wunderbar, allerdings sieht es leider nicht gut aus.
Und zwar bekomme ich die Proportionen nicht hin.

Im Prinzip möchte ich eigentlich nur eine Sache verändern.
Und zwar ist mein Hauptfenster zweigeteilt.
Im oberen Teil arbeitet der User, im unteren Teil kann er in Tabe Statusinformationen abrufen (werden in JTextArea und JTree ausgegeben).
Jetzt will ich, dass der untere Teil immer 30% der Bildschirmgröße einnimmt und der obere 70%.
Das geht aber nicht.
Ich habe nachgelesen :### .
Zuerst hatte ich ein Grid Layout verwendet.
Das war wohl falsch, weil der Layoutmanager da immer automatisch auf 50% 50% skaliert.

Habe es dann mit BorderLayout probiert.

Aber auch hier klappt es nicht.

Der obere Bereich (main) und der untere (footer) sind beides Panel.

Ich habe das mal so versucht:

f.add(footer, BorderLayout.SOUTH);
footer.setSize(500,500);

Das zeigt aber keine Reaktion.
Einzig wenn ich die Zeilenzahl der Textfelder ändere, kann ich footer beim BorderLayout vergrößern und verkleinern.
Das kanns doch aber nicht sein oder?
Gibt es da keine andere Möglichkeit, bzw. warum funktioniert meine Methode, dem Panel eine starre Größe zuzuweisen nicht, obwohl in der Doku steht, dass das Objekt bei SOUTH seine Höhe behält und nur in der Breite skaliert wird?

Danke schonmal für eine Antwort.
Ich versteh das echt nicht...
 

Bjoern2

Mitglied
Du kannst auch das GridBagLayout verwenden.
Das erlaubt eigentlich noch die größte Freiheit.

Setze hier für die erste Zelle (0,0) eine weigthy von 0.7 für die zweite Zelle (0,1) eine weighty von 0.3.
 

Leroy42

Top Contributor
André Uhres hat gesagt.:
Die Layoutmanager reagieren meist nicht auf setSize, sonder auf setPreferredSize.

Naja, reagieren auf.. tun sie eigentlich auf keins der beiden.


Sie rufen getPreferredSize auf die Komponenten
und rufen schließlich deren setSize Methode auf
(glaube ich zumindest).

setPreferredSize ändert nun einfach interne
Instanzvariablen, so daß getPreferredSize
eben diese zurückliefert.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben