Grafische Oberflächen mit Java - GUI Builder oder von Hand?

  • Themenstarter Themenstarter Ghuy
  • Beginndatum Beginndatum
G

Ghuy

Gast
Hi,

ich hab des öfteren mit AWT und Swing Oberflächen zusammen gebastelt, ohne Editor, sondern direkt im Source-Code.
Ich bin bei weitem kein Programmier-Gott, aber ich hab durch die zig-tausend Elemente irgendwann die Sachen nicht mehr gepflegt bekommen, weil eine kleine Änderung extrem viel Änderungen nach sich zog, weil alles angefasst werden musste (oder vieles)

Programmiert man überhaupt noch guis per Hand? Oder lieber mit gui-editoren und "mausklickerer" - falls ja, welchen Editor sollte man nehmen?

Wie erstellt man am besten GUIs?
 
Hi,
ein Thema und X Antworten.

Zuerst einmal zu den Gui-Editoren:
Ich denke da werden andere auch noch genauer drauf antworten können, grob gesagt kann man mit den meisten von diesen Tool recht schnell brauchbare Oberflächen zusammenklicken, kriegt dannach aber ab und an Probleme wenn man im Code etwas ändern will.

Dann zum selbst Programmieren:
Ich denke auch hier sollte man wieder unterscheiden was genau man haben will.
Meistens kommt man mit dem Border und dem Gridlayout gut hin, ab und an auch mit dem Flowlayout und dem Nullayout.

Will man z.b. ein Panel, das in der Mitte irgendwas zeichnen soll, oben noch paar Knöpfe bietet und links vielleicht ein kleines Menü, kann man dem einfach ein BorderLayout verpassen, in den North für die Knöpfe steckt man ein Panel mit GridLayout und für das Menü an der Seite vielleicht noch ein Border oder ein Grid.
Damit erreicht man mit 1-2 Schachtelungen schon recht brauchbare Gui-Ergebnisse die in den meisten Standard-Fällen hinlangen ohne x Zeilen Code zu verbraten.
Manchmal reicht das aber nicht mehr und die Layouts müssen flexibler gestaltet werden, so sollen z.B. irgendwelche Komponenten genauer auf die Größe von anderen Reagieren und dabei vielleicht sogar noch verschiedene Seitenverhältnisse beibehalten.
An dieser Stelle könnte man auf das GridBagLayout zurückgreifen, mit dem man bei sowas recht gute Ergebnisse erzielen kann - arbeitet man zum ersten Mal damit kann man sich auf ein paar Stunden Tutorials und Frust freuen weil die Oberfläche absolut nicht das macht was sie soll - aber auch zu dem Ding findet man hier gute Tutorials und mit etwas Einarbeiten kann man damit auch gut arbeiten.
Die letzte Möglichkeit wäre noch die Gui zum Großteil selbst zu zeichnen, was vorrangig bei grafisch aufwändigeren Applikationen verwendet werden sollte (Bei Spieleclients z.b. findet man im Menü fast nie JButtons o.ä., dort werden meistens eigene Grafiken, evtl sogar mit Effekten verwendet).

Zeig doch einfach mal her was du machen willst (evtl ne kleine Skizze mit Paint) und was du bereits hast, dann können wir dir sicher weiterhelfen.
Gruß
 
Nun, also vlt sieht man keinen "normalen" JBUtton ... Aber man kann ja z.B. beim Button die Option setContentAreaFilled(false) nutzen und schon hat man nicht diesen langweiligen Standard-Grau-Hintergrund. Die Bilder werden AFAIK dennoch angezeigt, was auch ziemlich hübsch ist... Dann noch einen Font wählen, der zum spiel past... Generell bietet einem Swing schon derat viele Möglichkeiten...

Kurz zu den Editoren: Ich denke auch, dass keine professionelle Software ohne einen Editor erstellt... Es gibt viele gute bis mittelgute kostenlose Editoren... IMHO ist der beste & kostenlose "Matisse GUI Builder", welcher bei Netbeans direkt eingebaut ist. Für Eclipse gibts ein paar kostenlose, die sind aber Murks, wie ich finde und ein paar richtig gute, kommerzielle Produkte...

Von Hand würd ich nichts mehr machen... Zeit ist Geld 😉
 
Swing und AWT nicht mischen. Wieso? Schau hier ins FAQ da ist ein Beitrag dazu.


ist. Für Eclipse gibts ein paar kostenlose, die sind aber Murks, wie ich finde und ein paar richtig gute, kommerzielle Produkte...
schon lange nicht mehr. Der WindowBuilder Pro ist mit abstand besser als der von Netbeans+dank Google kostenlos verfügbar.
 
@Tomate_Salat:

Hast Recht, wusste nicht, dass sich auf dem Sektor inzwischen was getan hat... Aber "mit Abstand besser" halt ich für Übertrieben.
 
Ja, ich entwickle beruflich Java und schreibe hauptsächlich (ca. 60% der Arbeitszeit) Swing-GUIs. Sobald man ins Detail geht und komplexere GUIs in Teilen wieder verwenden will, kommt man schnell mit GUI-Buildern an deren Grenzen (nur meine Meinung). Je größer die GUI um so weniger will ich einen GUI-Builder.

Wie viel Zeit drauf geht, hängt doch in der Regel nicht von dem Anordnen einiger Buttons oder dem erzeugen einzelner Event-Methoden ab. Der Hauptaufwand steckt doch im Zusammenspiel der Komponenten mit ihren Modellen und das kann Dir kein GUI-Builder abnehmen.

Ebenius
 
Hast Recht, wusste nicht, dass sich auf dem Sektor inzwischen was getan hat... Aber "mit Abstand besser" halt ich für Übertrieben.

ich kenne beide. Meiner Meinung nach ist er es. Er produziert lesbareren Code, ist flexibler, unterstützt mehr Frameworks, kommt mit manuellen Änderungen klar und liefert von sich aus einige Bibliotheken mit + bindet sie bei bedarf ein. Ob der Netbeans-Editor Databinding kennt, weiß ich nicht, aber das kann WB-Pro auch.

Ich habe vorher auch mit dem Netbeans-Editor gearbeitet. Fand ich bis dato auch am besten, naja bis ich eben WB-Pro gesehen habe.


Der Hauptaufwand steckt doch im Zusammenspiel der Komponenten mit ihren Modellen und das kann Dir kein GUI-Builder abnehmen.
Swing Data Binding - Google Web Toolkit - Google Code ... dich bekehr ich auch noch :joke:
 
Zuletzt bearbeitet von einem Moderator:
Typisch Google... Da denkt man, man kennt alles oder bzw hat nen groben Überblick... Und dann kommt Google wieder mit einem super-duper-bis-dato-einzigartigen-Produkt daher... Sieht wirklich interssant aus... Ich sehs mir auch mal an,..
 
Typisch Google... Da denkt man, man kennt alles oder bzw hat nen groben Überblick... Und dann kommt Google wieder mit einem super-duper-bis-dato-einzigartigen-Produkt daher... Sieht wirklich interssant aus... Ich sehs mir auch mal an,..
Noch viel schöner. Das Produkt war vorher mal ein Kostenpflichtiges (zusätzlich mit anderen Tools). Google hat gesagt: diese Tools sollte jedem Entwickler zu verfügung stehen und hat die Entwicklerfirma gekauft und vertreibt die Produkte jz kostenfrei ... ich mag google 🙂

Na wir schauen mal, ob Du das schaffst. ;-)
Klingt wie eine Herausforderung 🙂. Aber einen Blick kannste ja mal drauf werfen, denn Hey, es ist kostenfrei 🙂 und das Databinding ist ne super Sache. Braucht zwar ein wenig Einarbeitung, aber man kann damit wirklich schnell Zusammenspiele abbilden. Und was das Tool nicht kann, das brauchste eh nicht 😀
 
Wegwerf Prototypen sind mit einem GUI-Builder okay...

Alles andere sollte man von Hand machen, da man viel mehr Möglichkeiten hat und die Kunden eh immer besondere Wünschen haben, die man sonst nicht abbilden kann.

Ich baue Swing + EclipseRCP per Hand. Man braucht defintiv nicht länger als mit einem GUI-Builder.
 
Wie viel Zeit drauf geht, hängt doch in der Regel nicht von dem Anordnen einiger Buttons oder dem erzeugen einzelner Event-Methoden ab. Der Hauptaufwand steckt doch im Zusammenspiel der Komponenten mit ihren Modellen und das kann Dir kein GUI-Builder abnehmen.
dann kommt Google wieder mit einem super-duper-bis-dato-einzigartigen-Produkt daher
Äh naja nichts für ungut, aber data binding libraries gibt's auch für java schon seit langem wie Sand am Meer, einzigartig ist daran nichts. Soweit ich weiß können Netbeans und IntelliJ das auch seit langem von haus aus im GUI Builder einsetzen.
 
Ich baue ebenfalls die GUIs "von Hand", würde ich auch jedem empfehlen. Ich verwende TableLayout. Mit der Zeit habe ich bemerkt, dass ich immer wieder die gleichen Componenten brauche, so habe ich meine eigene "mini-Factory-Lib" zusammengestellt. Dadurch kann ich jetzt viel viel schneller eine ordentliche Gui zusammenbasteln.
 
Hallo Ebenius,

mich würde mal interessieren, wie du komplexe GUIs von Hand und ohne GUI-Builder realisiert bekommst. Kannst du mal ein paar Code-Beispiele geben?
 
Ich frage mich, wie man komplexe GUIs mit GUI-Buildern hinbekommen soll, sodass der Code danach noch wartbar ist. Vielleicht gibt es ein Missverständnis darüber, was eine GUI komplex macht? Oder anders gefragt: Ab wann gibt es für dich eine Rechtfertigung, einen GUI-Builder einzusetzen? Hast du vielleicht einen Screenshot einer GUI, die bei dir unter komplex fällt?

Ich meine, wenn zu viele Sachen gleichzeitig sichtbar sind, ist das doch auch für den Anwender unschön. Ich benutze normalerweise Tabs oder ähnliches, die ein paar Komponenten anzeigen. Jeder Tab wäre dann ein Panel oder eine Komponente einer eigenen Klasse, also ist im Code alles sauber getrennt und keine Klasse hat mehr als vielleicht 200 Zeilen.
 
Zuletzt bearbeitet:

Zurück
Oben