# wie macht am besten ein GUI ?



## ryane (7. Okt 2010)

Hallo leute ich brauche ein Rat von erfahrene GUI Programmierer. 
Ich möchte gern mal wissen welche layoutmanager am besten für die GUI ist .
gibt es nachteile , wenn man mit koordinaten arbeitet ?  oder solll man lieber den Layoutmanager alles machen lassen ?
Danke für euere antworten.


----------



## Gastredner (7. Okt 2010)

Kommt immer ganz darauf an, was du wie und womit erreichen willst.
Prinzipiell würde ich LayoutManager dem null-Layout vorziehen - es ist einfach flexibler und kommt dem Nutzer entgegen (bzw. seinen Wünschen).
Unter Swing erreicht man meiner Meinung nach durch Kombination der vorhandenen LayoutManager die besten Ergebnisse. Ich habe "externe" LayoutManager wie das FormLayout nie ausprobiert, aber über eine kluge Kombination von LayoutManagern kann man eigentlich alles relativ gut aufbauen. Vom GridBagLayout würde ich allerdings die Finger lassen: ich habe einmal damit gearbeitet und es war einfach grässlich.
Gelungener finde ich die Auswahl an LayoutManagern von SWT. Ich arbeite fast nur mit dem GridLayout und bin damit größtenteils wunschlos glücklich (ich wünschte, das AWT-/Swing-GridLayout wäre so wunderbar wie das von SWT). Das StackLayout kann in sehr speziellen Fällen hilfreich sein und das TableWrapLayout ist quasi das GridLayout für Oberflächen, die auf Eclipse Forms basieren.

Mit GUI-Designern habe ich keine großen Erfahrungen gesammelt. Gut möglich, dass man damit feine GUIs bauen kann - ich persönlich bevorzuge bisher jedoch den manuellen Entwurf.


----------



## z-mon (7. Okt 2010)

Hallo ryane,
also zunächst kommt es natürlich auf das Einsatzgebietes deiner GUI an. Grundsätzlich würde ich aber das Erstellen der GUI mit bedachten Layoutmanager bevorzugen. Natürlich gibt es für das Erstellen einer GUI auch diverse Tools, aber am saubersten programmiert man das ganze wahrscheinlich immer noch zu Fuß. Wieviel Erfahrungen hast du denn bis dato mit den Layoutmanager gemacht? Kennst du die konkreten Unterschiede? Weißt du wann du welche wie einsetzt?

Was hast du denn konkret vor? Was möchtest du gerne realisieren?


----------



## ryane (7. Okt 2010)

Danke für euere Antworten , 
Ich habe keine Erfahrung mit Layoutmanager ich habe es noch nie benutzt . Ich möchte ein GUI bauen der mindesten 4 JPanel  hat , und in den einzelnen Panel werden jeweils JTable , viele CheckBox  , JLabel und JtextField  geben , deshalb mussen  sie alle schön geordnet sein und  sich ans Vergrössern des Frames auch anpassen. 
Ich habe bei Netbeans die GUIbuilder kurz benutzt aber wenn ich mir den Code nachher anschaue , finde ich es sehr unverständlich , deshald denke ich mir dass es irgendwie ein besseres verfahren dafür gibt.


----------



## Marcinek (7. Okt 2010)

Ich benutze zum GUI Designen ebenfalls Netbeans. Man kann jedoch das volle Potential eines GUI Builders erst nutzen, wenn man weiß, was der GUI Builder macht.

Ich würde dir also vorschlagen dich zunächst mit der Materie ein wenig zu beschäftigen und GUIs manuell bauen.

Wenn du begriffen hast, was welcher Layaoutmanager macht kannst du das automatisiert machen.

Professionelle Projekte werden nie die GUI manuell machen. Aber man muss wissen, was da passiert.


----------



## Wildcard (7. Okt 2010)

> Professionelle Projekte werden nie die GUI manuell machen.


Mir ist nicht ganz klar ob du damit LayoutManager oder GUI Builder meinst. Falls es die GUI Builder sind dann kann ich dir versichern das man in Professionellen Projekten die GUI durchaus von Hand schreibt (auch wenn es sicherlich Ausnahmen gibt). Insbesondere Netbeans Matisse eignet sich meiner Meinung nach nicht für eine professionelle GUI weil Matisse keinen Quellcode parsen kann. Bei den beiden Eclipse Vertretern Window Builder und VE ist das besser, allerdings funktioniert es auch sehr gut ganz ohne GUI Builder.
Falls es die LayoutManager waren hast du natürlich recht, niemand positioniert die Oberfläche händisch und absolut.


----------



## noobadix (8. Okt 2010)

Nachteile Ergeben sich, wenn die Größe der Inhalte geändert wird, z.B. durch ändern des Frames oder wenn auf einem anderen OS die DPI der Schrift anders ist. Bin übrigens ein Freund des mächtigen und vielsietigen GridBagLayouts, obwohl es recht umständlich ist.


----------



## Gast2 (8. Okt 2010)

Für Swing kann ich dir das FormLayout von JGoodies empfehlen einfach und sehr flexiblel... 
Außerdem haben sie einen programmtischen Builder, der den Code sehr übersichtlich gestaltet


----------



## _Andi91 (8. Okt 2010)

Wildcard hat gesagt.:


> Insbesondere Netbeans Matisse eignet sich meiner Meinung nach nicht für eine professionelle GUI weil Matisse keinen Quellcode parsen kann.



Was meinst du mit Quellcode parsen?


Wir benutzen für unser Projekt Matisse (allerdings myEclipse Plugin und nicht in netbeans). Ich bin damit sehr zufrieden. Geht einfach und schnell.
Ansonsten wenn man händisch eine etwas komplexere GUI programmieren will, bleibt fast nichts anderes übrig als zum FormLayout oder GridBagLayout zu greifen.


----------



## fastjack (8. Okt 2010)

Installing WindowBuilder Pro - Google Web Toolkit - Google Code

hat mich irgendwie überzeugt


----------



## Marco13 (8. Okt 2010)

Mit einer Mischung/Verschachtelung aus BorderLayout, GridLayout, ein bißchen BoxLayout kann man IMHO schon der allergrößten Teil der praktisch relevanten Fälle abdecken. Der einzige (!) Fall, wo ich auch das von mir eigentlich nicht so gerne verwendete GridBagLayout anschmeißen würde, wäre sowas wie

```
----------------------------------------------------------------
| Label               |   TextField       | Button             |
| LabelWithLongText   |   TextField       | Button             |
| Label               |   TextField       | ButtonWithLongText |
----------------------------------------------------------------
```
weil man das mit den anderen nicht vernünftig umsetzen kann...


----------



## Marcinek (8. Okt 2010)

Wildcard hat gesagt.:


> Mir ist nicht ganz klar ob du damit LayoutManager oder GUI Builder meinst. Falls es die GUI Builder sind dann kann ich dir versichern das man in Professionellen Projekten die GUI durchaus von Hand schreibt (auch wenn es sicherlich Ausnahmen gibt). Insbesondere Netbeans Matisse eignet sich meiner Meinung nach nicht für eine professionelle GUI weil Matisse keinen Quellcode parsen kann. Bei den beiden Eclipse Vertretern Window Builder und VE ist das besser, allerdings funktioniert es auch sehr gut ganz ohne GUI Builder.
> Falls es die LayoutManager waren hast du natürlich recht, niemand positioniert die Oberfläche händisch und absolut.



Mit mauell meine ich nicht nullLayout 

Ich meine, dass in einem professionellen Umfeld (Kaufmänisch Anwendungen) entweder zur Generierung, GUI Builder greifen wird. Es gibt bestimmt GUIs für den Entanwender, die sich nicht ohne weiteres generieren lassen oder die so speziell ist, dass man die GUI nur dynamisch aufbauen kann (Mir fällt gerade kein Beispiel ein ^^).

Ich stimme dir zu, dass Netbeans suboptimal ist, weil es keien Quellcode parsen kann.

Allein der Vorteil, dass der generierte Code dann in jeder GUI absolut gleich ist schlägt nicht nur die fehlende portierbarkeit zwischen verschiedenen GUI Buildern.


----------



## Gast2 (8. Okt 2010)

Marcinek hat gesagt.:


> Ich meine, dass in einem professionellen Umfeld (Kaufmänisch Anwendungen) entweder zur Generierung, GUI Builder greifen wird. Es gibt bestimmt GUIs für den Entanwender, die sich nicht ohne weiteres generieren lassen oder die so speziell ist, dass man die GUI nur dynamisch aufbauen kann (Mir fällt gerade kein Beispiel ein ^^).



Naja war bis jetzt noch bei keiner Firma die einen GUI Builder benutzt hat.


----------



## Marcinek (8. Okt 2010)

Jeder baut sich seine GUI, selber auf??


----------



## Tomate_Salat (8. Okt 2010)

fastjack hat gesagt.:


> Installing WindowBuilder Pro - Google Web Toolkit - Google Code
> 
> hat mich irgendwie überzeugt



Mich auch, würde den auch professionell einsetzen, da man nach wie vor, volle Kontrolle über seinen Code hat.


----------



## fastjack (8. Okt 2010)

und er ist ab jetzt ....... KOSTENLOS! :toll::applaus::toll:


----------



## Wildcard (8. Okt 2010)

_Andi91 hat gesagt.:


> Was meinst du mit Quellcode parsen?
> 
> 
> Wir benutzen für unser Projekt Matisse (allerdings myEclipse Plugin und nicht in netbeans). Ich bin damit sehr zufrieden. Geht einfach und schnell.
> Ansonsten wenn man händisch eine etwas komplexere GUI programmieren will, bleibt fast nichts anderes übrig als zum FormLayout oder GridBagLayout zu greifen.



Matisse kann nicht alleine auf Java Files arbeiten sondern braucht eine eigene Formulardatei. Das führt dazu das sich Matisse GUIs nur mit Matisse bearbeiten lassen und man keine GUIs modifizieren kann die nicht durch Matisse erstellt wurden. Für sinnvolles Arbeiten im Team scheidet Matisse meiner Meinung nach dadurch schon direkt aus.
Window Builder Pro und Eclipse VE arbeiten nur auf dem Java Quellcode und können auch mit handgeschriebenem Code umgehen, daher sind diese beiden meiner Meinung nach wesentlich sinnvoller. VE wird allerdings leider kaum noch gepflegt, aber zum Glück ist der Window Builder Pro seit der Google Übernahme frei verfügbar.



			
				Marcinek hat gesagt.:
			
		

> Ich meine, dass in einem professionellen Umfeld (Kaufmänisch Anwendungen) entweder zur Generierung, GUI Builder greifen wird. Es gibt bestimmt GUIs für den Entanwender, die sich nicht ohne weiteres generieren lassen oder die so speziell ist, dass man die GUI nur dynamisch aufbauen kann (Mir fällt gerade kein Beispiel ein ^^).


Da würde ich wiedersprechen. Nach meiner Erfahrung werden GUI Builder primär von Hobby Entwicklern und fürs Rapid Prototyping eingesetzt, bei professionellen Projekten sind sie eher die Ausnahme.
GUI Builder kamen für mich auch nie wirklich in Frage, weil Matisse Mist ist und mir der VE zu langsam war, allerdings sieht der Window Builder Pro wirklich vielversprechend aus und ich werde in nächster Zeit genauer untersuchen in wie weit wir das Tool auch produktiv einsetzen können.


----------



## _Andi91 (8. Okt 2010)

Wildcard hat gesagt.:


> Matisse kann nicht alleine auf Java Files arbeiten sondern braucht eine eigene Formulardatei. Das führt dazu das sich Matisse GUIs nur mit Matisse bearbeiten lassen und man keine GUIs modifizieren kann die nicht durch Matisse erstellt wurden. Für sinnvolles Arbeiten im Team scheidet Matisse meiner Meinung nach dadurch schon direkt aus.



Achso meinst du des.
Ja ok das kann man als Nachteil sehen.
Aber wieso sollte es denn für arbeiten im Team ausscheiden?
Wenn jeder Matisse verwendet wo ist dann das Problem?
Wenn man im Team arbeitet sollte man sich ja sowieso an gewisse Dinge halten und nicht jeder sein eigenes Süppchen kochen.



Wildcard hat gesagt.:


> Da würde ich wiedersprechen. Nach meiner Erfahrung werden GUI Builder primär von Hobby Entwicklern und fürs Rapid Prototyping eingesetzt, bei professionellen Projekten sind sie eher die Ausnahme.



Also wie gesagt wir benutzen Matisse und unsere Anwendung ist nicht gerade klein (im Gegenteil).
Ich sehe auch keinen Grund wieso es nicht verwendet werden sollte.
Spart einfach immens Zeit und man kann auch viel schneller auf Änderungen reagieren statt immer mit den Layouts rum zu hantieren und dann hier und da noch preferedSize zu setzen etc.
So muss man einfach nur schnell die Komponenten woanders hinziehen ggf. die Größe anpassen und fertig.

Das mit den Forms Dateien sehe ich prinzipiell auch nicht als Problem an. Solange man von Anfang an auf Matisse setzt.

Mit anderen Designern als Matisse hab ich bis jetzt keine Erfahrung. Aber so sehe ich keinen Nachteil dabei Matisse zu verwenden.


Zu dem Window Pro Builder noch. Darf der auch (kostenlos) kommerziel verwendet werden? Hab dazu jetzt auf die Schnelle nix gefunden.


----------



## Marcinek (8. Okt 2010)

Wildcard hat gesagt.:


> Da würde ich wiedersprechen. Nach meiner Erfahrung werden GUI Builder primär von Hobby Entwicklern und fürs Rapid Prototyping eingesetzt, bei professionellen Projekten sind sie eher die Ausnahme.
> GUI Builder kamen für mich auch nie wirklich in Frage, weil Matisse Mist ist und mir der VE zu langsam war, allerdings sieht der Window Builder Pro wirklich vielversprechend aus und ich werde in nächster Zeit genauer untersuchen in wie weit wir das Tool auch produktiv einsetzen können.



Welche alternativen hast du für ein Projekt wenn du kein GUI Builder benutzt?

Welche Vorteile hast du dadurch?

Wieviele Leute arbeiten i.d.R. an deinen Projekten?


----------



## Wildcard (8. Okt 2010)

> Welche alternativen hast du für ein Projekt wenn du kein GUI Builder benutzt?


Man schreibt den Code einfach per Hand


> Welche Vorteile hast du dadurch?


Wartbaren Quelltext, ausser dem bin ich (gefühlt) per Hand schneller als mit einem GUI Builder. Das tatsächliche Anordnen der Widgets ist ohnehin der kleinste Teil der GUI Entwicklung.



> Wieviele Leute arbeiten i.d.R. an deinen Projekten?


Die (Teil-)Projekte bei denen ich üblicherweise tätig bin liegen so zwischen 4 und 10 Leuten.


----------



## ryane (8. Okt 2010)

Vielen Dank ! ich glaube ich soll dann beides lernen , denn es ist nicht allgemein zu sagen , was besser ist. Es ist bestimmt vom vorteil , wenn man beides lernt. 
Danke.


----------



## dzim (8. Okt 2010)

Also ich habe erst dank des WindowBuilders (damals noch von Instantiations und nicht kostenlos...) wirklich verstanden, wie es mit den Layouts u.s.w. funktioniert.
Ich denke wie Wildcard, das man Professionelle und dynamische Oberflächen besser von Hand bearbeiten kann, bin aber immer noch sehr begeistert, wie schnell man mit einem guten Designer einen Prototypen "basteln" kann, den man dann hervorragend als Ausgangsbasis für alle weiteren Modifikationen Nutzen kann.
Sicher geht auch das sehr gut und einfach von Hand (SWT: FormLayout, Grid~, Row~ und Fill~ decken IHMO den Bedarf an Layouts so ziemlich immer ab).


----------

