Panels, Layoutmanager und deren Grösse
Jasmine
- java
0 Slyh0 Jasmine0 Oliver Sonthof0 Slyh
Hallo,
Ich verwende ein BorderLayout für mein JApplet. Ich dachte mir es sei sinnvoll, alle Komponenten die ich z.B. in den "Süden" platzieren möchte, wiederum in einem Panel unterzubringen. Dazu habe ich mir eine Methode createPanelSouth() geshrieben die mir das Fixfertige Panel zurückgibt, welches dann in der init()-Methode mit
getContentPane().add("South" , this.createPanelSouth());
entsprechend plaziert wird. Seit ich alle Komponenten in einem Panel unterbringe, werden diese alle geschrumpft und die zur verfügung stehende Grössen werden nicht mehr ausgenutzt.
Wie kriege ich es hin, dass die Panel im Süden, Norden usw. und deren Inhalte (JTextBoxes, JTextAreas, JLists...) automatisch wieder maximiert werden? Wenn ich das ganze ohne die Verschachtelung in einem Panel mache funktionierts!
Viele Grüsse Jasmine
Hallo,
Seit ich alle Komponenten in einem Panel unterbringe, werden diese alle geschrumpft und die zur verfügung stehende Grössen werden nicht mehr ausgenutzt.
Du schreibst nicht, wie es auszusehen hat, also kann ich nur spekulieren.
Vermutlich hast du diesem Panel für den Süden einfach keinen oder einen
falschen LayoutManager zugewiesen. Wenn die gesamte Breite und Höhe
des Panels genutzt werden soll, bietet sich evtl. das GridLayout an.
Wenn ich jetzt völlig falsch liege, solltest du dein Problem sehr
viel genauer beschreiben. Am besten mit Screenshot und Code.
Übrigens solltest du dir überlegen, ob du nicht doch lieber das
GridBagLayout verwenden möchtest. Das hat zwar auch so seine Nachteile,
ist aber sehr mächtig (dafür aber auch komplizierter/kryptischer zu
schreiben). Jedenfalls würdest du dir viele seltsame Schachtelungen
ersparen, und dabei schneller und präziser zum gewünschten Ergebnis
kommen.
Gruß
Slyh
Hallo Slyh,
tatsächlich habe ich dem Panel keinen LayoutManager zugewiesen. Wusste gar nicht, dass man das muss...
Danke.
Gruss Jasmine
Hallo!
Übrigens solltest du dir überlegen, ob du nicht doch lieber das
GridBagLayout verwenden möchtest. Das hat zwar auch so seine Nachteile,
ist aber sehr mächtig (dafür aber auch komplizierter/kryptischer zu
schreiben). Jedenfalls würdest du dir viele seltsame Schachtelungen
ersparen, und dabei schneller und präziser zum gewünschten Ergebnis
kommen.
Meines Erachtens ist das TableLayout von http://www.clearthought.info/software/TableLayout/ ein adäquater Ersatz für das GridBagLayout, da es eine ebenso präzise Aufteilung erlaubt, dabei aber wesentlich einfacher zu handeln ist. Problematisch dürfte nur für Anfänger sein, dass eine nicht-standardmäßige Bibliothek zum Client übertragen werden muss (zu lösen über Class-Path-Eintrag im Manifest des Applet-Archivs).
Viele Grüsse
Oliver
Hallo,
Meines Erachtens ist das TableLayout von http://www.clearthought.info/software/TableLayout/ ein adäquater Ersatz für das GridBagLayout, da es eine ebenso präzise Aufteilung erlaubt, dabei aber wesentlich einfacher zu handeln ist.
Kannte ich noch nicht.
Ich kenne noch zwei weitere freie LayoutManager:
JGoodies Forms (http://www.jgoodies.com/freeware/forms/)
Der LayoutManager von Karsten Lentzsch ist hauptsächliche für
präzise Dialog-Layouts gedacht. Auf der Seite gibt's eine Demo.
Karten Lentzsch hat noch einige weitere interessante Java-Produkte
im Angebot. Sehr zu empfehlen!
Explicit Layout (http://www.zookitec.com/explicitlayout.html)
Sehr mächtig und dabei trotzdem noch gut zu verstehen. Man positioniert
(u.a.) Komponenten in Relation zueinander. Ungefähr so: "Positioniere
Komponente A rechts neben Komponente B mit einem Abstand von 20
Pixeln. Beachte einen Abstand zum unteren Rand von Komponente C
von 10 Pixeln."
Hört sich kompliziert an, läßt sich aber recht intuitiv programmieren.
Man kann zusätzlich noch Komponenten entlang von Linien positionieren
und verschiedenes mehr.
Kürzlich habe ich auch einen LayoutManager geschrieben, der wohl
ziemlich nah an das Explicit Layout rankommt. (Ich kannte es vorher
nicht.) Ein paar Sachen fehlen, ein paar sind besser, ein paar sind
anders.
Mal schauen ob ich meinen LayoutManager irgendwann fertig programmiere,
dann werde ich das evtl. hier posten.
Gruß
Slyh