Swing: Welcher LayoutManager?
-
Hoi,
ich frage mich, welcher LayoutManager für mich geeignet ist. Ich hab ein paar Buttons, die möchte ich in den Ecken und am Rand kleben haben, egal wie groß das Fenster wird. In der Mitte habe ich ein paar Components, die den verbleibenden Platz bestmöglich ausnutzen sollen.
Ich bin mal kurzzeitig beim BorderLayout stehen geblieben, aber der pappt ja alles direkt an den Rand, ich möchte schon den Abstand definieren können.
Mich dünkt fast, der GridBagLayout kann das alles, aber der ist mir jetzt irgendwo zu kompliziert. Vielleicht kann man das einfacher machen, bevor ich mich jetzt in den Wahnsinn stürze?Oder soll ich gar keinen verwenden und meine Komponenten selber ausrichten? Am liebsten wärs mir ja so HTML-mäßig.
-
ich verschachtel das border gerne mehrmals und zum schluss das gridlayout (ohne bag.. iiih) mit abstandsdefinition (ist ja möglich)
so long
-
ps: im größten nervfall machs mit null layout, und festen werten, ist aber dann nicht sonderlich portable.
-
Im Moment habe ich ein null-Layout, das möchte ich gerne ändern. Deine Vorgehensweise scheint mir etwas aufwändig zu sein, aber wahrscheinlich noch angenehmer als ein GridBagLayout. Danke auf jeden Fall.
-
Vorschlag: Schreib Dir doch z.B. ein Wrapper um das GridBagLayout, dass Du es HTML ähnlich benutzen kannst.
In der Firma haben wir mehrere eigene Panelklassen, die spezielle add() Methoden implementiert haben.
-
Vielleicht hilft dir auch dieses Tool:
http://www.cellspark.com/GridBagger.html
(zur Qualität kann ich nix sagen - hab's nie benutzt)
-
Ich vote ebenfalls für GridBagLayout.
Jedesmal wenn ich mich davor gedrückt habe, habe ich hinterher geflucht.
Das GridLayout ist zu star für ein komplexes GUI Editing.
Man muss allerdings jedesmal diese putzigen Nebeneffekte beim Window resize handle´n.
-
Moin Moin
Nimm das GridBagLayout!
Es heißt zwar das das der schwerste Layout Manager ist, IMHO ist es der einfachste und beste.cu CodeHure
-
Zum Thema GridBagLayout fällt mir nur folgendes ein: http://www.madbean.com/blog/2004/17/totallygridbag.html
-
IMHO ist es der einfachste und beste.
mit der Meinung wirst du wohl alleine dastehen.
-
Sgt. Nukem schrieb:
Zum Thema GridBagLayout fällt mir nur folgendes ein: http://www.madbean.com/blog/2004/17/totallygridbag.html
LOL
wie wahr
-
Hi
bin auch für GridBagLayout, das ist eindeutig Leistungsstärker als die anderen. (SpringLayout und BoxLayout mal ausgenommen da ich die noch nie angeschaut hab) und wenn es um modernes Gui design geht kommt man da fast nicht drum rum. Oder bei festen Dialog grössen NULL-Layout.
gruss Termite
-
Sgt. Nukem schrieb:
Zum Thema GridBagLayout fällt mir nur folgendes ein: http://www.madbean.com/blog/2004/17/totallygridbag.html
*LooooL*
QED!
-
Auch nicht schlecht:
http://www.madbean.com/blog/2004/30/ep3.html
-
codefreier schrieb:
mit der Meinung wirst du wohl alleine dastehen.
Also ich wüsste jetzt auch nicht wo beim GridBagLayout die Schwierigkeiten liegen sollen
Außerdem sollte man immer denken dass man ja das Panel an sich auch nochmal verschieben kann, wenndu also nen kleinen Abstand zwischen Button und Frame haben willst, machst du einfach nen kleinen Abstand zwischen Frame und Panel
-
Moin Moin
Also was ist den am GridBagLayout nun so schwierig?
Ist doch ganz einfach!cu CodHure
-
Na, ich mags net so Recht. I woaß net, ich hab noch nie was besseres für Layouts gesehen als HTML. Wenn man das im Browser darstellen kann, warum dann nicht auf nem Frame? Vielleicht wird ja XAML von Microsoft diesbzgl. ne Erleichterung.
Ein bisschen OT: Ich schaff's grad nicht, es einzustellen, dass sich das Frame immer schon während dem resizen aktualisiert. Hängt das evtl. vom Look & Feel ab?
-
Ok, also ich glaub ich kann mich mit den Netbeans GUI Designer + GridBagLayout schon anfreunden. Weiß noch jemand was mit dem resizen? Würd mich echt reizen, ich weiß dass es gehen muss (denn ich sehs ja), aber ich find beim besten Willen keine Möglichkeit, das einzustellen.
-
*push* (wegen dem resizen)
-
Oh sorry!! Das war jetzt echt nicht meine Absicht, euch die Lösung vorzuenthalten. Sie lautet Toolkit.getDefaultToolkit().setDynamicLayout(true);
Ein etwas seltsamer Name und auch nicht so toll dokumentiert. Naja, muss man wissen.
sorry und danke für die Erinnerung
-
resize:
Habe ich bisher so gemacht//mainClass private void setGUI() { c.fill = GridBagConstraints.BOTH; gridBag.setConstraints(mainPanel, c); } mainFrame.addComponentListener(new ResizeListener); //private class ResizeListener public void resized() //o.ä. { setGUI(); }
MFG John