2009-02-12 11 views
10

Ich bin relativ neu in Java (speziell Swing) und habe in letzter Zeit einige ziemlich einfache Anwendungen, lernen, wie ich gehe. Die neueste Version enthält viele Formularkomponenten wie JLabels, JTextFields, JButtons usw. Alle wurden mit einem visuellen Builder in NetBeans platziert. Ich muss sagen, dass ich nicht wirklich zu NetBeans gehe und wirklich nur die GUI entworfen und den Code direkt in Eclipse kopiert habe.GroupLayout: Lohnt es sich zu lernen?

Meine Frage ist: Lohnt es sich ein sehr gutes Verständnis von GroupLayout und Codierung von Hand (und damit mehr Kontrolle über meine GUI) oder einfach weiter so wie es ist?

Antwort

11

Ich würde sagen, es lohnt sich, etwas Zeit zu nehmen, um zu verstehen, GroupLayout wenn nur, weil es immer eine gute Idee ist zu verstehen, was Ihre IDE tut. Zu wissen, was hinter den Kulissen passiert, macht Sie flexibler, denn wenn Sie in einer Situation sind, in der Sie keinen Zugriff auf Netbeans haben, wissen Sie, wie Sie das für Sie erstellte Layout replizieren können. Außerdem, nachdem Sie eine anständige Menge an Erfahrung bekommen haben, werden Sie wahrscheinlich insgesamt Zeit sparen. Sie können häufig eine einfache GUI schneller per Hand entwickeln als mit einem visuellen Editor, insbesondere wenn Sie die Zeit zum Kopieren und Einfügen des Codes von Netbeans in Eclipse berücksichtigen.

Und natürlich lernen Sie, wie Sie GroupLayout von Hand verwenden können, auch den Übergang zu einem der anderen Layout-Manager von Java erleichtern, was wiederum zu einfacheren Code und noch mehr Zeiteinsparungen führen kann.

+0

Ich denke das auch; Ich bin vielleicht in einer Situation, in der ich nicht die Möglichkeit habe, Code von NetBeans zu kopieren, aber wo ich eine relativ komplexe GUI erstellen muss - und in Fällen, in denen ich eine einfachere GUI erstellen muss, muss ich mich nicht an NetBeans wenden Erstellen Sie es lieber auf einem einfacheren Layout-Manager. – Ciaran

10

GroupLayout wurde nicht wirklich für die Handcodierung entwickelt; es ist viel, viel ausführlicher als jeder andere Layout-Manager (außer möglicherweise GridBagLayout). Da Sie sagen, dass Sie neu bei Swing sind, schlage ich vor, mit den grundlegenden Layout-Managern zu beginnen (BorderLayout und FlowLayout); Sie können sie in NetBeans verwenden, indem Sie mit der rechten Maustaste auf das Bedienfeld oder den Rahmen klicken und "Layout festlegen" auswählen. Nachdem Sie mit denen vertraut sind, schlage ich vor, Sie überprüfen MiGLayout.

Um Ihre andere Frage zu beantworten: Ich denke an NetBeans Formular-Designer als ähnlich einem Taschenrechner; Es ist ein wunderbares Werkzeug, wenn Sie bereits die Grundlagen kennen, aber Sie werden nie etwas lernen, wenn Sie es nur als Krücke benutzen.

+0

Ich denke, SpringLayout ist noch ausführlicher. ;) Ich habe das GroupLayout benutzt, das mit LWUIT kommt und es war nicht so schlecht, aber auch nicht einfach. Ich mochte JGoodies FormLayout, und da MiG Layout sein Nachfolger ist, empfehle ich MiG wärmstens. Wie auch immer, es ist gut, auch die grundlegenden Layouts zu kennen. –

+0

Ich kenne BorderLayout bereits - aber praktisch ist GroupLayout das, was ich für die Anwendung, die ich gerade erstelle, am besten finde. Wie für die Verwendung von NetBeans als Krücke - ich mag einfach nicht die IDE und finde es unnötig kompliziert in einigen Teilen – Ciaran

1

Die meisten der komplizierteren Layout-Manager sind nicht dazu bestimmt, von Hand codiert zu werden. Sie können es tun, aber Sie werden wahrscheinlich in einigen Monaten Probleme haben, Ihr eigenes Layout zu verstehen. GroupLayout ist keine Ausnahme, schlimmer noch, es ist überhaupt nicht intuitiv, Sie müssen Ihre Meinung ändern, indem Sie Ihr Layout in GroupLayout-Begriffe zwingen.

Es ist meiner Meinung nach, dass diese Layout-Manager nicht wert sind, zu lernen. GridBagLayout ist das Schlimmste von allen. Es hat mehr Optionen, als Sie möglicherweise herausfinden können, und sie scheinen nie zu tun, was Sie denken, dass sie tun. MiGLayout ist sehr mächtig, einigermaßen intuitiv und macht meistens das, was Sie denken, aber ich werde immer noch argumentieren, dass es zu mächtig und zu kompliziert für das Programm ist. GroupLayout ist nicht so mächtig, nicht so intuitiv und lohnt sich nicht.

Mein Rat von Jahren des Auslegens Java GUI und Wartung von ihnen ist zu lernen und den mächtigsten Layout-Manager zu verwenden, den Sie in zwei Stunden beherrschen und den Sie nie vergessen werden, dann Ihre GUI mit verschachtelten Containern unter Verwendung dieses Layouts zu gestalten Manager und das grundlegende BorderLayout/GridLayout/FlowLayout/BoxLayout.

+2

http://madbean.com/anim/totallygridbag/ –

+4

-1 GroupLayout scheint sehr intuitiv für mich. Sicher, es ist ausführlich, aber das ist Java, von dem wir sprechen. Lies einfach die Dokumentation und folge [diesem Beispiel] (http://download.oracle.com/javase/tutorial/uiswing/layout/group.html). Danach starten Sie es in "echten" GUI-Projekten. Ich denke, Sie werden feststellen, dass es wirklich nicht so schlimm ist, wie es zuerst aussieht. – bcat

+2

-1 Ich stimme @bcat zu. Ich möchte auch direkt auf den Ratschlag im letzten Absatz eingehen. Die besten Ergebnisse kommen immer von Meisterleistungen, die länger als zwei Stunden dauern. Ich werde nie vergessen, wie man 'GroupLayout' benutzt, solange ich es benutze. Ich verstehe auch nicht, wie 'GroupLayout' möglicherweise komplizierter sein könnte als die Verwendung von ** verschachtelten Containern **. So würde ich es machen, wenn mir jemand sagen würde, es sei kompliziert. –

3

GroupLayout ist es wert zu lernen, programmgesteuert zu verwenden.

Ich verwende GroupLayout als mein Standard-Layout auf fast jedem Panel, das ich erstelle, das Standard-Swing-Komponenten verwendet. Ich finde, dass die Ergebnisse für das Auge immer sehr angenehm sind und sich sehr gut verändern.Ich habe immer diese Optionen:

groupLayout.setAutoCreateGaps(true); 
groupLayout.setAutoCreateContainerGaps(true); 

dieses Layout verwenden hat wiederholt nicht nur mir gegeben Layouts großartig aussehende, aber es gibt mir die Low-Level-Erfahrung in der Lage sein erforderlich, um gemeinsam einige komplizierte Platten mit einer Reihe von Komponenten, die zur Kompilierungszeit unbekannt sind. Ich finde auch, wenn die Anzahl der Komponenten dynamisch ist, dass ich alle Komponenten auslegen und sie dann mit setVisible(boolean) ein- und ausschalten kann, ohne die horizontalen und vertikalen Gruppen neu zu erstellen.

0

Wenn Sie zu einem VB-Programmstil neigen, verbringen Sie Zeit mit GroupLayouts. Andernfalls versuchen Sie, GridBagLayout Manager mit geeigneten Beispielen zu verstehen. Es ist das Beste für diejenigen, die möchten, dass jede GUI-Komponente unter unserer Stiftkontrolle steht (wir sollten schreiben und nicht die IDE). Ein guter Java-Entwickler sollte Zeit in GUI-Objekten und Business-Objekten verbringen und wissen müssen, wie man sie trennt. L. Sankaranarayanan.

Verwandte Themen