Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>GUI-Programmierung in Java

GUI-Programmierung in Java

SevenOfFive27.10.0821:46
Hallo!

Kennt jemand ein gutes Buch, das sich intensiv oder auch ausschliesslich mit der GUI-Programmierung in Java beschäftigt und dabei aber auch die Vor- und Nachteile der verschiedenen Toolkits (AWT, Swing, SWT...) kritisch beleuchtet?

Natürlich kann es auch ein gut gemachtes Onlinetutorial sein (am liebsten deutschsprachig). Die Hauptsache ist, das es eine gute Einführung in alle relevanten Toolkits mit vielen Beispielen ist.

Augenblicklich stehe ich vor der Aufgabe eine neue GUI für ein kleines Programm zu schreiben, welches auf Mac OS X, Linux (KDE, Gnome) und Windows laufen soll. Ich stelle fest, dass AWT nicht in Frage kommt, weil es zu wenige Möglichkeiten bietet. Swing ist in punkto Funktionsumfang interessant, aber eher etwas träge und wegen des relativ komplexen Layouts der GUI ein wenig schwierig (GridBagLayout und Constraints). Auch der Look der GUI ist nicht ganz das, was ich erwarte. Sie sollte auf jedem OS wie eine native App aussehen.

Hier kommt SWT ins Spiel. Damit kenne ich mich jedoch noch so gut wie gar nicht aus, weiss aber immerhin so viel, dass es noch komplizierter als Swing ist. Dort sollte das Buch ansetzen.

Nebenbei: Kennt vielleicht jemand einen guten GUI-Builder, der mit Eclipse 3.4 läuft und für nicht-kommerzielle Zwecke frei ist? Der VE scheint ja seit längerem nicht mehr aktualisiert worden zu sein!?

Danke!
SevenOfFive
0

Kommentare

exAgrajag27.10.0822:28
Ich persönlich finde SWT schrecklich. Unter OSX performt es auch nicht wirklich und du kannst damit kein richtiges MVC programmieren. Die Container-Views (Listen, Outline-Views usw.) wollen die Daten direkt haben. Ich hab mir vorgenommen, falls ich noch mal was mit einer GUI machen muß, es mit Swing zu machen. Ich finde, Swing schaut auch besser aus, als SWT – jedenfalls unter OSX.

NetBeans hat einen netten GUI-Builder, der um Lichtjahre besser als VisualEditor ist. Damit kann man allerdings nur AWT und Swing machen. Mir hat kürzlich einer was von Mantisse (oder ähnlich) erzählt, mit dem man wohl recht gut GUIs basteln kann. Ich hab mir da aber nichts weiter angesehen.

Was das Buch angeht, hab ich bislang nur mal den Krüger benutzt. Ich meine, der ist auch recht umfangreich auf Swing eingegangen.
0
SevenOfFive29.10.0815:51
Danke für Deine schnelle Reaktion!

Du schreibst, dass Du, was das Buch angeht, bisher nur den "Krüger" benutzt hast. Was ist denn das eigentlich für ein Buch und wie aktuell ist es?

Ja, Swing sieht unter OSX schon ziemlich gut aus (wenn man z.B. vom JFileChooser absieht), aber ich plane meine Programme multiplattformkompatibel zu machen - darin sehe ich den eigentlichen Vorteil von Java. Außerdem habe ich den Anspruch, dass sie sich möglichst nativ auf dem Ziel-OS "anfühlen" sollen. Daher kam ich auf SWT.

Leider bin ich bei der Buchsuche noch wenig erfolgreich. Bis auf ein nettes (deutschsprachiges) Onlinetutorial habe ich noch nichts Annehmbares gefunden. Muss ich mich denn wirklich durch die API-Doku von SWT beißen?

Apropos Bücher: Kennst Du vielleicht eine gute (ebenfalls deutschsprachige) Einführung in Xcode und InterfaceBuilder? Habe bisher noch nicht großartig in diese Richtung gesucht...
0
exAgrajag29.10.0816:38
Den Krüger kannst du auch online lesen, bzw. als HTML-Doku runterladen (links unten in der Navi-Bar).

Ich fand das Buch recht gut. Es hat auch allgemein gute Kritiken. Es richtet sich nicht nur an Anfänger, sonder es handelt auch fortgeschrittenere Themen ab. Einfach mal reinschauen.

Zum Thema "nativ aussehen": Man kann, ich meine in der Manifest-Datei, Parameter angeben, die dafür sorgen, daß das Programm-Menü OSX-like in der Menüleiste angezeigt wird. Ich weiß nicht, was es da noch so gibt. Auf jeden Fall ist dieses Jar-File unter allen Betriebssystemen lauffähig, nur unter OSX verhält es sich dann etwas anders. Ich weiß nicht mehr, wo ich das mal gefunden hatte, aber das sollte schnell gefunden sein. Bei Apple sollte es die Infos auf jeden Fall geben.
0
SevenOfFive29.10.0816:53
Dank Umgebungsvariablen, die man in diesem Fall mit "System.getProperty(os.name);" leicht abfragen kann und dank dem (auch zur Laufzeit) umschaltbaren PLAF der JFC in Swing ist es ja kein Problem das Aussehen seiner GUI dem Ziel-OS anzupassen. Nur leider ist mir z.B. der JFileChooser "negativ" aufgefallen. OK, ich gebe zu, dass das Klagen auf hohem Niveau ist. Es ist schon eine tolle Sache, dass man den Datei öffnen/speichern Dialog nicht mehr selber bauen muss, aber es wäre doch schick, wenn dieser genauso aussähe, wie der den das OS nativ nutzt. Nach meinen Erfahrungen mit OS X, Linux (SuSE) und Windows (XP) sieht er immer gleich aus. Gibt es hier eine Möglichkeit den OS-typischen zu nutzen?

Den Krüger: Hast Du dazu vielleicht eine URL? Von welchem Verlag ist es denn?

Kennt jemand brauchbare deutschsprachige Xcode-Bücher, die über eine reine Einführung in die Bedienung hinaus gehen? Auch an gute Objective-C- und Cocoa-Bücher wäre ich interessiert. Gibt es da etwas nennenswertes und aktuelles?
0
exAgrajag29.10.0817:02
Das müsste das hier sein (im unteren Drittel):

http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/

Ich hab es allerdings nie benutzt, ich kann dir da also nicht weiterhelfen.

Eventuell lohnt sich ja für dich die Java-Dev-Mailingliste:

http://lists.apple.com/mailman/listinfo/java-dev


Ach, ich hab die URL vergessen. Zack, da hast du:

http://openbook.galileocomputing.de/javainsel7/
0
SevenOfFive29.10.0817:18
exAgrajag
Das müsste das hier sein (im unteren Drittel):

http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/

Habe gerade mal schnell drüber geschaut. Sieht recht interessant aus - wenn auch nicht mehr ganz aktuell. Das Wesentliche hat sich aber wohl nicht geändert. Habe mir direkt mal PDFs davon gemacht und werde sie mir später in Ruhe durchlesen. Danke!
exAgrajag
Ach, ich hab die URL vergessen. Zack, da hast du:

http://openbook.galileocomputing.de/javainsel7/

Ach, den Ullenboom meinst Du mit dem Krüger! Den nutze ich schon seit Jahren online, aber danke Dir trotzdem!

0
exAgrajag29.10.0817:24
SevenOfFive
Ach, den Ullenboom meinst Du mit dem Krüger! Den nutze ich schon seit Jahren online, aber danke Dir trotzdem!
AAAARGHHH!!!! *klatschhandvorkopf*

Stimmt, die Insel war ja gar nicht Krüger – das war ja Goto Java

Ich sag ja – ist etwas her.
0
Johloemoe
Johloemoe29.10.0817:24
Also es kommt natürlich auch drauf an, was du genau machen willst, aber ich geh mal davon aus, dass dein Programm nicht sonderlich hohe Ansprüche an die GUi stellen wird. Und da ist Swing definitiv in Ordnung. Sicherlich nicht das schnellste aber gut zu programmieren und eigentlich auch logisch aufgebaut. Die Java-Insel kann ich dir auch empfehlen. Und wegen des L&F: Wenn du ne Anwendung in Java schreibst, bzw. allgemein eine Multi-Platform-Anwendung, dann ist es halt so, dass die nicht genauso aussehen wie native Programme. Dazu sind die Konzepte der Betriebssysteme einfach zu unterschiedlich. Sieht man ja auch an anderen plattformübergreifenden Programmen (Firefox, OpenOffice etc.). Die sehen auch nicht alle wirklich Mac-like oder Windows-like aus.
0
Mr. Krabs
Mr. Krabs29.10.0817:31
SevenOfFive
Augenblicklich stehe ich vor der Aufgabe eine neue GUI für ein kleines Programm zu schreiben, welches auf Mac OS X, Linux (KDE, Gnome) und Windows laufen soll.

Hm definiere "kleines Programm"... kleines Programm = kleines GUI?

Ich habe zu meiner Schulzeit mal ein GUI-Builder angefangen zu schreiben, der hat dann Code erzeugt, allerdings keine Verwendung von LayoutManagern gemacht... Welche da nun aktuell gut sind und wie weit die sind, kann ich dir leider nicht sagen.
„Deux Strudel!“
0
SevenOfFive29.10.0818:35
exAgrajag
AAAARGHHH!!!! *klatschhandvorkopf*

Stimmt, die Insel war ja gar nicht Krüger – das war ja Goto Java

Ich sag ja – ist etwas her.

Ist ja nicht schlimm, Danke Dir auf jeden Fall!
Johloemoe
Also es kommt natürlich auch drauf an, was du genau machen willst, aber ich geh mal davon aus, dass dein Programm nicht sonderlich hohe Ansprüche an die GUi stellen wird. Und da ist Swing definitiv in Ordnung. Sicherlich nicht das schnellste aber gut zu programmieren und eigentlich auch logisch aufgebaut. Die Java-Insel kann ich dir auch empfehlen. Und wegen des L&F: Wenn du ne Anwendung in Java schreibst, bzw. allgemein eine Multi-Platform-Anwendung, dann ist es halt so, dass die nicht genauso aussehen wie native Programme. Dazu sind die Konzepte der Betriebssysteme einfach zu unterschiedlich. Sieht man ja auch an anderen plattformübergreifenden Programmen (Firefox, OpenOffice etc.). Die sehen auch nicht alle wirklich Mac-like oder Windows-like aus.

Ja, das stimmt natürlich weitestgehend. Um möglichst nativ aussehende GUIs zu bauen empfiehlt sich angeblich SWT. Was hälst Du davon?

Normalerweise komme ich mit Swing auch bestens klar. Es bringt alle Features (und noch viel mehr), die brauche, mit und die Geschwindigkeit ist auch OK, denn meine GUI ist nicht wirklich besonders anspruchsvoll. Nur habe ich mir eben in den Kopf gesetzt, daß der Anwender möglichst nicht bemerken soll, daß es sich um eine in Java geschriebene Applikation handelt.
Mr. Krabs
SevenOfFive
Augenblicklich stehe ich vor der Aufgabe eine neue GUI für ein kleines Programm zu schreiben, welches auf Mac OS X, Linux (KDE, Gnome) und Windows laufen soll.

Hm definiere "kleines Programm"... kleines Programm = kleines GUI?

Ich habe zu meiner Schulzeit mal ein GUI-Builder angefangen zu schreiben, der hat dann Code erzeugt, allerdings keine Verwendung von LayoutManagern gemacht... Welche da nun aktuell gut sind und wie weit die sind, kann ich dir leider nicht sagen.

OK, ich gebe es offen zu: "klein" ist wirklich ein etwas sehr dehnbarer Begriff!

Das Programm wird ein Backupprogramm und dafür nutze ich grob zwei Hand voll Komponenten (JTextAreas, JScrollPane, JFileChooser, JButtons etc.)

Da Du das interessante Thema GUI-Builder ansprichst: Du hast angefangen einen zu schreiben? Respekt! Hast Du das Projekt zuende geführt?

Wer kann einen guten GUI-Builder für Eclipse (Ganymede) empfehlen und welcher ist das?
0
Z29.10.0819:51
exAgrajag
NetBeans hat einen netten GUI-Builder, der um Lichtjahre besser als VisualEditor ist. [...]Mir hat kürzlich einer was von Mantisse [...] erzählt, mit dem man wohl recht gut GUIs basteln kann.

- Mantisse und NetBeans ist das gleiche. Der GUI-Editor heisst Mantisse
SevenOfFive
Wer kann einen guten GUI-Builder für Eclipse (Ganymede) empfehlen und welcher ist das?

Der beste für Eclipse ist derzeit WindowBuilder: http://www.instantiations.com/windowbuilderpro/default.htm

[Kann man entweder dort einzeln beziehen, je für SWT, Swing, AWT - oder halt günstiger: JBuilder kaufen, dort ist WindowBuilder in der Swing Version enthalten]



0
exAgrajag29.10.0820:58
Z
- Mantisse und NetBeans ist das gleiche. Der GUI-Editor heisst Mantisse
Jepp, das hab ich heute auch erfahren, als ich mal nachgefragt hatte. Ich hatte es im Zusammenhang mit Eclipse gehört und gleich angenommen es wäre ein Eclipse-Plugin. Das stand irgendwie nie zur Diskussion.

Mantisse hat aber auch so seine Macken. Mir hat es zumindest (reproduzierbar) bei diversen Aktionen das Layout zerkloppt. Mal mehr mal weniger. Aber es ist auf jeden Fall ein Schritt in die richtige Richtung. Gefällt mir.
0
Z30.10.0807:28
netbeans 6.5 erscheint bald, da ist mantisse besser.


wobei ich lieber eclipse + eine visual editor nutzen würde, da in europa - insbesondere deutschland, eclipse vermehrt zum einsatz kommt
0
Mr. Krabs
Mr. Krabs30.10.0810:07
SevenOfFire:
Ich habe die Grundlagen fertig gehabt, mussten eigentlich nur die Komponenten hinzugefügt werden. Dann war ich aber nicht so ganz mit dem Quellcode zufrieden, da ich gedacht habe, dass es eine bessere Lösung gibt. Habe es aber nicht weiterentwickelt, der Code liegt hier aber noch irgendwo rum...
„Deux Strudel!“
0
SevenOfFive30.10.0816:54
Z
Der beste für Eclipse ist derzeit WindowBuilder: http://www.instantiations.com/windowbuilderpro/default.htm

[Kann man entweder dort einzeln beziehen, je für SWT, Swing, AWT - oder halt günstiger: JBuilder kaufen, dort ist WindowBuilder in der Swing Version enthalten]

OK, und was gibt es so an guten freien GUI-Buildern? Mantisse für Eclipse ist anscheinend ein kommerzielles Produkt!?
Z
netbeans 6.5 erscheint bald, da ist mantisse besser.

wobei ich lieber eclipse + eine visual editor nutzen würde, da in europa - insbesondere deutschland, eclipse vermehrt zum einsatz kommt

Auf NetBeans 6.5 bin ich auch gespannt. Eine ziemlich komplette IDE. Aber die GUI fand ich irgendwie etwas zu verspielt.

Eclipse finde ich angenehmer. Warum gibt es eigentlich keine aktuelle Release von VE für Eclipse?
Mr. Krabs
SevenOfFire:
Ich habe die Grundlagen fertig gehabt, mussten eigentlich nur die Komponenten hinzugefügt werden. Dann war ich aber nicht so ganz mit dem Quellcode zufrieden, da ich gedacht habe, dass es eine bessere Lösung gibt. Habe es aber nicht weiterentwickelt, der Code liegt hier aber noch irgendwo rum...

Oh, ich kenne das, wenn man mit seinem Quellcode nicht zufrieden ist! Eigentlich weiß man, daß man ihn ändern sollte, aber irgendwie hat man keine Lust alles neu zu machen. Ja, kein schönes Gefühl...

Meinst Du, daß Du es nochmal irgendwann angehen wirst? Ich melde mich als Betatester freiwillig!
0
Mr. Krabs
Mr. Krabs30.10.0817:22
SevenOfFire:
Naja, wenn man schnell lernt wird man auch schnell feststellen, dass man in der Vergangenheit (selbst wenn diese nur einen Monat zurück liegt) Sachen zu kompliziert gemacht hat. Das war bei meinem Projekt so. Ich kann dir die Quellen zum Studium aber gerne geben, jedoch wird man schneller sein, wenn man es sauber neu Aufbaut und die angewandten Konzepte optimiert Umsetzt. Als ich den Code geschrieben habe war ich in der 11. oder 12. Klasse, unzufrieden bin ich mit dem Code nicht, aber ich weiß, dass ich ihn lieber aufräumen anstatt weiterentwickeln möchte (auch wenn das Aufräumen eine Art weiterentwicklung ist).
„Deux Strudel!“
0
SevenOfFive03.11.0810:14
Moin zusammen!

Nochmal zurück zu meinen ursprünglichen Fragen:
SevenOfFive
Kennt jemand ein gutes Buch, das sich intensiv oder auch ausschliesslich mit der GUI-Programmierung in Java beschäftigt und dabei aber auch die Vor- und Nachteile der verschiedenen Toolkits (AWT, Swing, SWT...) kritisch beleuchtet?

Natürlich kann es auch ein gut gemachtes Onlinetutorial sein (am liebsten deutschsprachig). Die Hauptsache ist, das es eine gute Einführung in alle relevanten Toolkits mit vielen Beispielen ist, die aber nicht nur an der Oberfläche bleibt.

und
SevenOfFive
Nebenbei: Kennt vielleicht jemand einen guten GUI-Builder, der mit Eclipse 3.4 läuft und für nicht-kommerzielle Zwecke frei ist? Der VE scheint ja seit längerem nicht mehr aktualisiert worden zu sein!?

Kann da jemand weiterhelfen?

0
void
void03.11.0811:09
öhm swing kann man ohne probleme das native aussehen des hostsystems übernehmen lassen:
try{
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
  //blabla
}
„Developer of the Day 11. Februar 2013“
0
Johloemoe
Johloemoe03.11.0811:44
void
Nein?
0
void
void03.11.0812:17
Johloemoe
void
Nein?
inwiefern nicht?
klar unter osx muss man noch diverse anpassungen machen fürs menü etc...
aber sonst...?
„Developer of the Day 11. Februar 2013“
0
MacRabbitPro03.11.0812:27
Generell stellt es einen nicht zu unterschätzenden Aufwand dar, eine Java Anwendung zu erstellen, die unter den jeweiligen Plattformen nicht wie ein Alien wirkt.
Diese Arbeit wird Dir auch nicht einfach durch ein GUI Toolkit abgenommen sondern dafür müsst Du in Deiner wirklich was tun (= in Abhängigkeit der jeweiligen Plattform code ausführen).

Ich würde mich nach wie vor als UI Toolkit für SWING entscheiden, weil SWING am Java-Konformsten (selbst in Java Implementiert) ist und ohne native Libs auskommt. Im Gegenteil zu SWT. Und wenn man seine Anwendung sorgfältig entwickelt, dann merkt man auch nicht an der Performance dass es eine Swing App ist zumal die meisten VM implementierungen bei ihrem nativen Look&Feel die SWING UI Widgets mit Nativen GUI Elementen rendern.
0
void
void03.11.0813:09
ja klar is alles mit aufwand verbunden... hab das selber schon öfter gemacht und man stößt oft auf jni, aber generell sind die standard-gui elemente durch einen simplen l&f-wechsel schon abgehandelt.
das "look" is noch relativ einfach, für das "feel" -da stimme ich zu- muss man viel selber machen... (zb drag n drop verhalten etc)
„Developer of the Day 11. Februar 2013“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.