Lysander schrieb:
user unknown schrieb:
GUI-Designer habe ich bislang nur als Monstren erlebt, die aufgeblasenen Code erzeugt haben, mit dem sie auch nicht mehr zurechtkamen, wenn man ihn von Hand geändert hat, ...
Genau deswegen habe ich ja JavaFX erwähnt (und Qt - wie andere - in den Himmel gelobt!)... da wird eben *kein* Code mehr erzeugt. Das das nicht gut funktioniert, sehe ich genauso wie Du.
Wenn Du 'kein' mit der Maus markierst, und dann das fette A klickst, dann wird Dein 'kein' fett, Sternchen funktioniert hier nicht. ☺
Außerdem habe ich alles andere als den Eindruck, dass Du das genauso siehst wie ich. Ich ärgere mich darüber, welch ineffizienten, unübersichtlichen, grottigen Code die Designer produzieren, dass man diesen oft nicht manuell modifizieren kann, also Round-Trip-Engineering oft nicht funktioniert.
Bei Qt läuft das nun schon definitiv über 16 Jahre (Anno 1999 iirc hatte ich den ersten Kontakt zu Qt)! PyQt, ein bekanntes Python Binding für Qt, kann diese XML basierten UI-Dateien sogar zur Laufzeit laden und interpretieren - besser geht es kaum;
Wann sonst? Wenn der Code auf der Festplatte liegt?
kein manuelles Erzeugen des Codes! Zudem hat Qt schon immer den Ansatz verfolgt, dem User den erzeugten C++-Code (aus den UI-Dateien), *nicht* zugänglich zu machen.
Tja - wieso nicht?
Stattdessen leitet man von der erzeugten GUI-Klasse ab und hat damit eine vollständige Entkopplung von automatisch generierten Code und eigenem Code. Das funktioniert ausgezeichnet.
Wenn Dich das so begeistert kannst Du auch mit Swing erst mal ein LysanderJTextfield von JTextfield ableiten, und das dann instanziieren.
Das Konzept von deklarativer GUI in separaten Metadateien ist natürlich nicht neu und bereits das schrottige MFC von Microsoft hat das in Ansätzen schon so gemacht - nur extrem schlecht. Im Java-Umfeld dagegen kenne ich von früher für AWT, Swing usw. nur Designer, die *direkt* Java-Code erzeugen und den User dazu animieren, darin herum zu wurschteln.
Tja - man kann natürlich selbst Code schreiben, der Swing- oder andere GUI-Komponenten mit Daten aus XML-Strukturen initialisiert. Genau das scheint man ja bei Java-FX getan zu haben.
Das hat dank JavaFX nun ein Ende, weswegen ich das tatsächlich (neben vielen anderen tollen Features) als erstes für mich unter Java benutzbares GUI-Framework ansehe.
Was jetzt das Problem an manuell geschriebenem Code ist ist noch nicht deutlich geworden.
WPF, ein aktuelles MS GUI-Framework, setzt dabei auch auf eine XML basierte deklarative Sprache für die UI-Elemente (XAML). Wie man sieht, setzt sich das langsam aber sicher auch im Mainstream durch. (Wie ist das eigentlich bei Apple?)
Ich habe schon viel Schrott gesehen, der sich im Mainstream durchgesetzt hat. Mit der Masse der Fliegen zu argumentieren war noch nie seriös. ☺
Ich vermute mal, dass Du eben genau die negativen Erfahrungen gemacht hast, wie ich und deswegen kein Vertrauen zu GUI-Designern hast. Ich kannte halt vorher schon die geniale Qt-Lösung und war daher von Java in Sachen GUI sofort frustriert Anfang der 2000er...
Im Gegenteil.
Mich hat beeindruckt, dass man mit Java die GUI schreiben kann und nicht dem GUI-Designer-Voodoo ausgeliefert ist.
Generell ist es natürlich in all diesen Frameworks auch immer möglich, GUI von Hand zu erzeugen. Aber mal Hand aufs Herz: GUI-Initialisierungen zu schreiben ist einfach nur lästig und ätzend!
Ich habe das Abklappern von Menüs und um Rumfummeln mit der Maus dagegen als lästig empfunden, den erzeugten Boilerplatecode häßlich und häufig ineffizient. Wieso soll ich von JTextField erst ein JTextFieldName ableiten, um es zu initialisieren? Umständlich, überflüssig.
Aus diesem Grunde gibt es dafür ja Werkzeuge... und gute Frameworks bieten auch immer angenehme Hooking Mechanismen, wie man statische, designte GUI mit dynamischen Elementen, die zur Laufzeut erzeugt werden, zu integrieren.
Die der Designer dann natürlich nicht anzeigen kann, genau.
Ich kann Dir nur empfehlen, mal einen Blick auf ein Framework mit genau so einem Ansatz zu werfen - es wird Dich garantiert mit der Welt der GUI-Designer versöhnen, glaub mir 😉
Ich halte es nicht für unmöglich, aber ich glaube nichts. Außer dass ich schon schlimmeres gesehen habe.
Da ich darüber erst vor kurzem philosophiert habe, noch ein Link zu dem Thread in einem anderen Forum.
Da ist zur Zeit abgeschaltet. ☺