Was wäre der beste Layout Manager?

8

Ich möchte eine GUI machen, die wie oben aussieht. Im Moment habe ich ein Panel, das das Namensschild, den Namen textfield, brith date label und birthday textfield enthält. Meine Frage ist, was wäre der beste Layout-Manager auf dem Panel zu verwenden, so dass die Zeile "Namen Komponenten" (label + Textfeld) und die Zeile "Geburtsdatum Komponenten" (label + Textfeld) würde gleichmäßig vertikal verteilt werden das Panel.

Ich dachte über die Verwendung von Flow-Layout, aber das würde zu keinen Abstand zwischen den beiden Zeilen von Komponenten führen. Ich dachte über die Verwendung eines Rasterlayouts nach, aber ich kenne die Lückengröße zwischen den beiden Zeilen der Komponenten nicht.

Ein komplizierterer Ansatz ... ich dachte darüber nach, das Namensschild und das Textfeld in ein Feld zu setzen und das Geburtsdatums-Etikett und das Textfeld in einem anderen Feld, dann das Grundrahmen-Layout und den Namen auf Nord, Geburtsdatum auf Süden ... aber dann müsste ich noch sicherstellen, dass die Namensbestandteile vertikal im Namensfeld zentriert sind und die Geburtsdatumskomponenten vertikal im Geburtsdatumsfenster zentriert sind.

Jede Hilfe wird geschätzt. Das Ziel besteht darin, sicherzustellen, dass die Zeile der Namensbestandteile und die Zeile der Geburtsdatumskomponenten vertikal verteilt sind, wobei die Namensteile vertikal in der oberen Hälfte zentriert sind und die Geburtsdatumskomponenten vertikal in der unteren Hälfte zentriert sind. Wenn etwas verwirrend klingt, lass es mich wissen, ich werde versuchen, es für ein besseres Verständnis umzuformulieren.

Ich verwende strikt Java Swing mit Eclipse, keinen GUI Builder oder ähnliches.

    
livelaughlove 28.11.2012, 22:06
quelle

4 Antworten

2

Ich persönlich mag GridBagLayout .

Hier ist ein Beispiel zur Demonstration:

%Vor%     
David Kroukamp 28.11.2012, 23:04
quelle
9

Ich mag die MigLayout . In diesem Fall wäre es sehr einfach, die Komponenten so anzuordnen, dass das MigLayout ein tabellenartiges Verhalten aufweist und die Komponenten auf diese Weise angeordnet wären. Dies wird im QuickStartGuide beschrieben.

Bearbeiten:

Hier ist ein kleines Beispiel:

%Vor%     
htz 28.11.2012 23:31
quelle
3

Ich empfehle Ihnen dringend, sich von Layouts fernzuhalten, die von einem Layout-Manager automatisiert werden sollen - sie können flexibel sein, aber sie werden eher als Hammer verwendet, ein sehr peinlicher, der viel Fingerspitzengefühl erfordert, wenn Sie Komponenten benötigen Größe auf natürliche Weise ändern.

Es ist schon eine Kunst, Layoutmanager zu lernen. Sie wählen nicht nur eines aus und verwenden es für jedes Problem, stattdessen nehmen Sie ein paar verschiedene Typen und verschachteln sie auf eine Weise, die wie Ihre Daten aussieht.

In deinem Fall denke ich, dass du mit 3 Flow-Layouts gut zurechtkommen wirst, zwei horizontale in einer vertikalen, diese Art von GUI ist genau das, wofür flowLayout gemacht wurde und du musst nicht mit Parametern herumspielen .

Übrigens können viele Probleme durch Verschachteln von Border- und Flow-Layouts gelöst werden - Border kann außergewöhnlich nützlich sein, weil die Mitte so viel Platz wie möglich einnimmt, aber die 4 Seiten so viel Platz wie möglich lässt Sie brauchen - in der Tat BorderLayout hat oft nur 2 oder 3 Bereiche gefüllt - aber kann andere Border oder Flow-Layouts leicht verschachteln. Diese führen zu GUIs, die sehr wenig Platzierungsspezifikationen erfordern, aber die Größe immer noch auf natürliche Weise ändern.

BEARBEITEN: Hier ist ein Arbeitscode von zwei Flow-Layouts, die in einem Box-Layout verschachtelt sind.

Es ist groovy (nicht Java), aber der Unterschied ist reine Syntax - mit weniger Unordnung.

Beachten Sie die Einfachheit und das Fehlen von Zahlen zu erfinden - es funktioniert einfach so, wie Sie es erwarten.

%Vor%     
Bill K 28.11.2012 23:24
quelle
1

GroupLayout entspricht Ihren Anforderungen. Schau es dir an. Es hat die Fähigkeit, Lücken automatisch zu erstellen (oder Sie können Ihre eigenen verwalten) und es eignet sich hervorragend zum Erstellen von Formularen. Es funktioniert entweder horizontal oder vertikal.

    
eSuarez 28.11.2012 23:06
quelle

Tags und Links