wie macht am besten ein GUI ?

ryane

Mitglied
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.
 
G

Gastredner

Gast
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

Bekanntes Mitglied
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

Mitglied
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.
 
M

Marcinek

Gast
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

Top Contributor
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

Bekanntes Mitglied
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.
 
G

Gast2

Gast
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

Bekanntes Mitglied
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.
 

Marco13

Top Contributor
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
Code:
----------------------------------------------------------------
| Label               |   TextField       | Button             |
| LabelWithLongText   |   TextField       | Button             |
| Label               |   TextField       | ButtonWithLongText |
----------------------------------------------------------------
weil man das mit den anderen nicht vernünftig umsetzen kann...
 
M

Marcinek

Gast
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.
 
G

Gast2

Gast
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.
 

Wildcard

Top Contributor
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

Bekanntes Mitglied
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.

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:D).
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.
 
Zuletzt bearbeitet:
M

Marcinek

Gast
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

Top Contributor
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

Mitglied
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

Top Contributor
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).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
melaniemueller Was macht e.getSource() ? AWT, Swing, JavaFX & SWT 2
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
ruutaiokwu Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse AWT, Swing, JavaFX & SWT 3
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
Furtano AWT GridBagLayout macht mir Sorgen AWT, Swing, JavaFX & SWT 3
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
T JLabel macht sich selbstständig? o.0 AWT, Swing, JavaFX & SWT 2
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
S Swing Swing macht sehr seltsame Zeichnungen. AWT, Swing, JavaFX & SWT 13
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
G Swing Button ActionListener macht komische Sachen AWT, Swing, JavaFX & SWT 19
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
hdi Swing JFrame#setCursor macht Zicken AWT, Swing, JavaFX & SWT 10
L Swing JButton macht Eventhandling kaputt AWT, Swing, JavaFX & SWT 3
D GridBagLayout macht nicht das was es soll AWT, Swing, JavaFX & SWT 12
J Swing Formulare in Swing - wie macht ihr das? AWT, Swing, JavaFX & SWT 7
T JTable / RowSorter macht große Probleme AWT, Swing, JavaFX & SWT 2
V Swing Mein swingender Pokertisch macht Probleme AWT, Swing, JavaFX & SWT 10
G Bildervorschau macht Probleme AWT, Swing, JavaFX & SWT 22
N SWT Text pack() macht Text zu klein AWT, Swing, JavaFX & SWT 2
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
N Gridlayout macht Probleme AWT, Swing, JavaFX & SWT 3
G jpanel macht kein repaint AWT, Swing, JavaFX & SWT 2
F Thread macht keine Pause AWT, Swing, JavaFX & SWT 22
W Wie macht man in Swing eigentlich nen Benutzereingabedialog? AWT, Swing, JavaFX & SWT 7
T JTree macht mich wahnsinnig (selektion) AWT, Swing, JavaFX & SWT 2
hdi meine paint-methode macht faxen? AWT, Swing, JavaFX & SWT 21
W Wie macht man so nen Settings Dialog AWT, Swing, JavaFX & SWT 2
P JTree macht mich fertig AWT, Swing, JavaFX & SWT 3
E Hilfe - setVisible macht was es will AWT, Swing, JavaFX & SWT 7
F Paint-Methode Überschreiben macht Refresh-Fehler ? AWT, Swing, JavaFX & SWT 8
G KeyListener Problem in GUI (macht einfach nichts) AWT, Swing, JavaFX & SWT 2
M JComboBox macht nicht immer was sie soll AWT, Swing, JavaFX & SWT 5
F JTable mit Checkbox macht Probleme AWT, Swing, JavaFX & SWT 4
F Look and Feel zur Laufzeit ändern macht Probleme AWT, Swing, JavaFX & SWT 3
A Was macht super? AWT, Swing, JavaFX & SWT 10
C Was genau macht getValueIsAdjusting() ? AWT, Swing, JavaFX & SWT 4
W JavaFX Kontextmenü - wie am Besten? AWT, Swing, JavaFX & SWT 6
B GridLayout - wie am besten implementieren AWT, Swing, JavaFX & SWT 3
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
Z Wie gehe ich dieses Vorhaben am besten vor? AWT, Swing, JavaFX & SWT 3
M Wie am besten realisieren AWT, Swing, JavaFX & SWT 3
Rudolf Swing Wie testet man am besten eine GUI? AWT, Swing, JavaFX & SWT 3
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
J Java Look And Feel- Welche gefallen euch am besten? AWT, Swing, JavaFX & SWT 12
C Was is am besten für Icon? AWT, Swing, JavaFX & SWT 2
T Funktionsplotter.nur wie am Besten ? AWT, Swing, JavaFX & SWT 6
A Wie folgendes am besten realisieren (Multithreading.) AWT, Swing, JavaFX & SWT 16
K GUI,MVC und Oberservable.Wie implementiere ich es am besten? AWT, Swing, JavaFX & SWT 5
G Spielfeld für ein Spiel erstellen, wie am besten? AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben