# Modernes GUI Framework in JAVA vergleicbar mit WPF/Qt



## 23 (11. Mai 2011)

Hallo,

kennt jemand ein gutes GUI Framework für Java Desktop Anwendungen das ähnlich viel bietet wie WPF (C#) oder Qt (C++) in Hinsicht auf Animationen und Styling der GUI Elemente?

Weiterhin würde ich gerne in so einem Framework ein 3D Switch Control implementieren.
Rotating WPF Content in 3D Space - CodeProject

Vielen Dank


----------



## Marco13 (11. Mai 2011)

Letzteres geht mal wieder in Richtung Swogl - und nein, trotz der 2 Jahre alten "News" ist das Projekt nicht tot. Genaugenommen könnte "bald" Version 0.2 rauskommen


----------



## 23 (11. Mai 2011)

Das sieht schon sehr cool aus 

JavaFX ist nur für RIAs also kann ich keine Desktop Anwendungen erstellen die auf das Dateisystem zugreifen?


----------



## aze (11. Mai 2011)

Ich habe mal gelesen,dass man JavaFx in Swing einbetten kann.

Hier mal ein Link dazu: JavaFXDev: NetBeans Platform with JavaFX 2.0ea | JNBB – Joschs NetBeans Blog


----------



## Kr0e (11. Mai 2011)

Wenns dir um 3D GUIs geht... Versuch mal "Nifty!"... Ist IMHO das beste 3D GUI... 

@Marco13: Wie du weißt, bin ich ein Fan von Swogl! Swogl ist und bleibt ne richtig gute Idee! 

Leider ist Swing nicht so richtig hübsch... Es gibt keine Animationen und Fade-Effekte und man kann auch nicht mal eben das L&F für seinen Zweck anpassen... Nifty ist vollständig durch XML konfigurierbar und es gibt Bindings für JOGL/LWJGL und wird benutzt von  jME3, Ardor3D, Slick. Ich persönlich finde, dass eine Nicht-3D-Anwendung, keine Schnickschnack GUI braucht... 3D Anwendungen hingegen, sollten schon alles ausschöpfen was möglich ist bei der grafischen Darstellung, vorallem, weil dort durch Hardwarebeschleunigung sehr viel möglich ist 

Und nur am Rande:
JavaFX ist recht lahm... Diese übschen GUIs bei JavaFX lasten ganz schön die CPU aus, da es eben nicht hardwarebeschleunigt ist...

Du musst dich einfach entscheiden... Simple Desktopanwendung -> Swing, OpenGL 3D Anwendung -> Nifty, Swogl oder ähnliche Frameworks...

Gruß,

Chris


----------



## 23 (11. Mai 2011)

Es geht nicht ausschließlich um Animationen sondern ein vergleicbares Framework zu WPF oder Qt.

"Rich UI Framework" 

Scheinbar gibt es hier und da etwas aber keine Lösung "aus einer Hand". Liege ich da richtig?


----------



## maki (11. Mai 2011)

Es gibt schon ein paar sehr verbreitete (Swing, SWT, etc.pp), allerdings bieten die nicht die optisch ansprechenden Möglichkeiten die du wohl suchst.

Das ist ein Grund dafür, dass Java auf dem Desktop eher für "proffessionelle" Anwendungen verbreitet ist, bei denen weniger auf Styling und die Animation der Widgets geachtet wird


----------



## Marco13 (11. Mai 2011)

"Rich" ist schon ein Stichwort das passt: Sowas wie Filthy Rich Clients ist einen Blick wert. Auch sowas wie Swinglabs &mdash; Java.net (swinglabs.org scheint gerade down zu sein). Aber EIN "One rules all"-GUI-(und mehr)-Framework a la Qt gibt's in Java AFAIK nicht. Wobei ich mir nicht sicher bin, inwieweit die GUI-Möglichkeiten (im Sinne von "Rich" Components) bei Qt so deutlich über Swing hinausgehen (bin da nicht auf dem neuesten Stand). Qt ist halt auch viel mehr als nur ein reines GUI-Framework.

@Kr0e: Nifty kannte ich noch nicht. Sieht ja ganz ... nifty aus  Soweit ich das sehe ist es komplett 2D, und rein "inhaltlich" nichts, was man nicht (mit einigem Aufwand...) auch in reinem Swing machen könnte, aber die Beschreibung per XML und die dichte Integration in LWJGL könnte praktisch sein. BTW: Eines der Hauptziele beim aktuellen Refactoring von Swogl ist es, beliebige Renderer zu unterstützen (d.h. auch LWJGL), und es leichter in bestehende Anwendungen integrierbar zu machen. Letztendlich ist und bleibt Swogl zwar ein riesen-Fake, aber vielleicht wird es dadurch doch allgemeiner einsetzbar. (Ich dachte auch schon an eine Integration in MT4j, aber speziell in bezug auf eine Abstraktion der Interaktion und der Layouts ist noch etliches zu tun, was vermutlich nicht in die 0.2er-Version schaffen wird)


----------



## Sonecc (11. Mai 2011)

Gibt doch eine QT Bibliothek für Java oder hab ich das falsch im Kopf?


----------



## Kr0e (11. Mai 2011)

Marco13 hat gesagt.:


> BTW: Eines der Hauptziele beim aktuellen Refactoring von Swogl ist es, beliebige Renderer zu unterstützen (d.h. auch LWJGL), und es leichter in bestehende Anwendungen integrierbar zu machen.




Das wäre so endgeil  Mich persönlich stört es nämlich nicht, das Swing etwas langweilig ist...  

Kurz nochmal zu nifty:
Du meintest, es wäre grundsätzlich nichts, was man nicht auch mit Swing machen könnte... Nun es stimmt schon.. Es ist eine 2D GUI, aber mir ist nicht ganz klar, wie man dowa smit Swing machen kann ? Also z.B. diese Gloweffekte, wenn man mit der Maus drüber geht... Also ich meine... Nifty ist halt genau für solche schicken Menüs ausgelegt, was es sehr einfach macht, das ganze zu bedienen!

ABER:
Swogl ist cool, weil man eben mit dem Matisse GUI Builder z.B. Menüs basteln kann und diese dann hinterher rendern.. 

gruß,

Chris


----------



## Marco13 (11. Mai 2011)

@Sonecc: Ja, Qt Jambi | Qt Jambi is the Qt library made available to Java - das war lange eher so "halbgar-inoffiziel-betamäßig", aber anscheinend haben sie das jetzt "reaktiviert", es gibt einen Blog mit news (und die sind sogar ziemlich new ). Muss ich mir auch mal (wieder) näher ansehen...

@Kr0e: Grundsätzlich funktioniert das schon mit JOGL und LWJGL, aber bei letzterem hab' ich es bisher nur mit dem AWTGLCanvas getestet - dieses Display-Ding und die Input-Verarbeitung bei LWJGL sind mir irgendwie noch suspekt und fremd... BTW: Kann sein dass ich bald Beta-Tester brauche  Aber dann werde ich einen Thread dafür aufmachen, ich werd' den hier jetzt nicht mehr so sehr mit Swogl hijacken... 

EDIT: Aber zu nifty: Klar ist das aufwändig, wenn man das "from scratch" mit Swing machen wollte. Es gibt auf den verlinkten Seiten (Filthy Rich Clients und SwingLabs) schon viele Demos/Components, wo solche Effekte wie Animation (mit dem Timingframework) und ähnliche Dinge wie das "Glow" drin sind, aber eben leider nicht alles "aus einem Guß". Schade eigentlich: Das ganze zu einen schicken Framework kombiniert könnte Swing und Java Auftrieb verleihen.


----------



## 23 (11. Mai 2011)

maki hat gesagt.:


> Es gibt schon ein paar sehr verbreitete (Swing, SWT, etc.pp), allerdings bieten die nicht die optisch ansprechenden Möglichkeiten die du wohl suchst.
> 
> Das ist ein Grund dafür, dass Java auf dem Desktop eher für "proffessionelle" Anwendungen verbreitet ist, bei denen weniger auf Styling und die Animation der Widgets geachtet wird




Haha es gibt auch Unternehmen die bereit sind vom SAP Style und WinForms Style abzuweichen und wirklich schöne und auch benutzerfreundliche Anwendungen möchten... ;-)

Wenn die heutigen Frameworks alle auf dem Stand von Swing wären ohje... die armen User.


----------



## Kr0e (11. Mai 2011)

Welche User meinst du ? Die 0815 User , die Hilfe schreien, wenn ihr Explorer Fenster weg ist ? 

Oder meinst du iwelche Designerfirmen, die sich alle schrecklich toll finden, weil sie Appleprodukte benutzen ?

Die meisten Firmen die ich in meiner (wenn auch noch nich allzu langen) Laufbahn kennengelernt habe, benutzen WinXP oder gar Win2000 mit grauen und langweiligen Interfaces.....

Du musst immer die zielgruppe im auge haben! Für Spiele sind außergewöhnlich schicke UIs natürlich ein MUSS! aber für Büroanwendungen.... Naja...


----------



## 23 (11. Mai 2011)

Es geht nicht um außergewöhnlich schick. Schau dir mal die UIs an die Telerik z.B. entwicklet.
Developer Productivity, Agile Project Management, Automated Testing Tools, Web Content Management | Telerik

Wenn man sowas mit Java machen würde, wäre der Aufwand um einiges höher als z.B. mit WPF oder Qt.


----------



## Kr0e (11. Mai 2011)

Um das hier zu einem gewissen Ende zu bringen...

Nein: Es gibt sowas noch nicht in Java. Technisch gesehen kann man das aber ohne Frage mit Java realisieren.

Es gibt Ansätze wie Nifty z.B. die dir ermöglichen, hübsche und animierte GUIs zu erzeugen, allerdings sind die meisten davon
noch in der Entwicklungsphase.



Normalerweise wird eben mit Windows gearbeitet, also würde es für viele Firmen keinen Sinn machen, solche Sachen in Java zu entwickeln, wodurch die meistens professionellen Lösungen für Windows sind (.NET + C#).

Davon abgesehen... Wie Marco13 eben schon gesagt hat, ist mit Swing auch viel möglich...
Es gibt viele (davon ein paar auch kommerzielle!!) Swing L&Fs, die sich nich hinter deinem Link verstecken müssen...

Du musst halt etwas Elan mitbringen... Dafür läufts dann aber überall und nicht auf einem Windowsrechner


----------



## 23 (12. Mai 2011)

Das ist schade das es noch kein modernes "all-in-one" ui framework gibt.

Warum geht die SwingX Site nicht mehr? Ist das Projekt tot?


----------



## 23 (12. Mai 2011)

Gibt es evtl. noch ein Animationframework für SWT oder Swing?


----------



## Marco13 (12. Mai 2011)

Auf SwingX &mdash; Java.net war der letzte Commit vor 15 Stunden.... (Was nicht heißt, dass es nicht in der Zwischenzeit gestorben sein könnte )


----------



## Kr0e (12. Mai 2011)

15 Stunden ... da kann ne Menge passieren ^^

Achja, eine Sache die noch nicht genannt wurde ist TWL: Themable Widget Library... Verdammt mächtiges Tool mit einem Themeeditor ebenfalls in TWL geschrieben... 

TWL Projekt: TWL - Themable Widget Library
Der Themeeditor: Themer - TWL Theme Editor

Probiers mal aus und dann kannst du immer noch Java niedermachen


----------



## ulim (12. Mai 2011)

Also SwingX ist für mich kein Framework, sondern eine Sammlung von Swing-Komponenten, die man mit jedem beliebigen Framework oder auch standalone einsetzen kann. Ein Framework ist eher sowas wie Eclipse RCP oder die Netbeans Platform, wo also ein einheitliches Programmiermodell und bestimmte Konzepte dahinter stehen. Gutes Aussehen ist nicht der Job eines Frameworks, sondern wartbarer Code und hohe Produktivität.

Vielleicht solltest Du also eher nach Komponentenbibliotheken und L&Fs suchen? Dann kannst Du auch mehrere davon kombinieren und zusätzlich ein Framework verwenden, um die ganzen Bausteine zu integrieren. Je nach Art Deiner Anwendung könnte z. B. die Netbeans VisualLibrary etwas für Dich sein.

Ulrich


----------



## Gast2 (13. Mai 2011)

ulim hat gesagt.:


> Also SwingX ist für mich kein Framework, sondern eine Sammlung von Swing-Komponenten, die man mit jedem beliebigen Framework oder auch standalone einsetzen kann. Ein Framework ist eher sowas wie Eclipse RCP oder die Netbeans Platform, wo also ein einheitliches Programmiermodell und bestimmte Konzepte dahinter stehen.



Das wurde hier schon sehr oft diskusstiert und es gibt unterschiedliche Meinungen dazu


----------



## Gast2 (13. Mai 2011)

Vielleicht noch ganz interessant für dich
SWT-Benutzeroberflächen auf Qt-Basis | heise Developer


----------

