it-swarm.com.de

Wie kann ich eine "modern aussehende" Java-Desktopanwendung erstellen?

Ähnliche Fragen dazu werden regelmäßig gestellt, aber viele dieser Antworten sind veraltet.

Ich muss eine plattformübergreifende Desktopanwendung in Java mit einer GUI von vergleichbarer Qualität zu aktuellen Desktop-Apps erstellen.

Swing ist die Standardeinstellung, aber ich bin noch nicht mit einer Swing-Anwendung konfrontiert, die zumindest recht altmodisch und klobig aussah (subjektiv, ich weiß, aber bei GUIs ist es schwierig, ästhetische Beurteilungen zu vermeiden).

Ich stelle fest, dass der neue Bitcoin-Client jetzt QT mit Java-Bindungen verwendet und über eine attraktive Benutzeroberfläche verfügt. Dies hat jedoch den Nachteil, dass es kein reines Java mehr ist.

So viel von dem, was ich finde, wenn ich nach Swing-bezogenen Bibliotheken suche, ist 5 Jahre oder älter, auch wenn sich die Ästhetik von Desktop-Anwendungen seitdem erheblich weiterentwickelt hat.

Wenn Sie eine Java-Desktopanwendung von Grund auf neu erstellen müssten, welche würden Sie für die GUI verwenden?

47
sanity

Sehen Sie sich an, wie Sie das Erscheinungsbild Ihres Programms Java ändern können. Auf diese Weise können Sie das allgemeine "Thema" Ihres Programms anpassen. Hier gibt Informationen zum Ändern des LAF.

9
lrAndroid

Ich kann Ihnen auch ein neues LaF anbieten, um in - WebLaF zu suchen. Ich arbeite derzeit daran, viele UI-Funktionen bereitzustellen und die Arbeit mit Swing für jedermann zu vereinfachen, indem nur die grundlegenden Funktionen der WebLaF-Bibliothek verwendet werden. 

Einige Beispiele, die zeigen, wie einige WebLaF-Komponenten aussehen: Some of WebLaF components

Einige der wichtigsten Ziele, die ich anvisiere: 

  1. Großartiges und modern aussehendes L & F mit Unterstützung für alle Swing-Komponenten
  2. Ein umfangreiches Set an zusätzlichen Komponenten, das Sie nicht im Standard-Swing finden
  3. Eine große Anzahl von Utility-Klassen, die Sie beim Schreiben des Codes unterstützen

Die WebLaF-Bibliothek bietet auch einige weitere Vorteile und Besonderheiten:

  1. Es ist ein Open-Source-Projekt (GPLv3 lizenziert)
  2. Einfaches Styling der Komponenten mit einem Malersystem (speziell mit 9-Patch-Dateien)
  3. Schnelle und einfache Anpassung des Standard-Webstils
  4. Viele Funktionen zur Beschleunigung und Vereinfachung der Erstellung der Swing-Anwendungsschnittstelle

Du kannst die demo-app ausprobieren, um zu sehen, ob sie modern und einfach genug ist :)

31
Mikle Garin

Haben Sie in JavaFX 2.0 nachgesehen? Es ist so konzipiert, dass es leicht mit Swing verbunden werden kann, und verfügt über viele moderne, gut aussehende Bedienelemente.

Wie von lrAndroid erwähnt, kann eine Swing-App auch wie eine native App aussehen, wenn Sie das System mit:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
9
Bringer128

Moderne Javascript-Frameworks (ExtJS, Dojo, etc ...) bieten den gleichen Widgets-Reichtum oder mehr (Excel wie beispielsweise Raster), eine größere Auswahl an L & F und passen in der Regel besser zum Betriebssystem des Benutzers. Die Benutzer sind auch mit ihren Browsern sehr vertraut und hey, "modernes Zeug" ist im Web und das moderne Web ist heute HTML + Javascript.

Der Aufwand für das Konvertieren einer App in "web like" ist minimal. Eine eingebettete Anlegestelle kann sehr klein bleiben und der Festplattenspeicherplatz ist weniger ein Problem.

Für die zukünftige Weiterentwicklung der Anwendung ergeben sich zusätzliche Vorteile.

  • Plötzlich wird aus der Desktop-App eine Server-App, auf die von einem anderen Desktop aus zugegriffen werden kann. Wir konnten eine Desktop-App innerhalb weniger Wochen zum "Portal" hochstufen.
  • Durch das Umschreiben der App in Bezug auf (Ajax) Web-Services können Sie ganz einfach einen vollständigen REST (oder SOAP ...) -Service-Stack erstellen. Die App kann dann in andere Anwendungen integriert werden, einfach von außen überwacht werden usw.
  • Die Unterstützung anderer Geräte (Smartphones, Tablets, ...) wird durch die Konzentration auf die Benutzeroberflächenschicht erheblich vereinfacht
  • Wenn die App wächst, ist die Trennung der Bedenken sauberer. Entwickler, die an der Benutzeroberfläche arbeiten, müssen sich nicht mit Code auf niedriger Ebene herumschlagen.
  • Es gibt viele ausgezeichnete JS/HTML-Designer und Entwickler, die nicht in Java programmieren.

EDIT

3 Jahre später ist dies dank Electron extrem einfach geworden.

6
Bruno Grieder

Versuchen Sie eine davon:

  1. JTattoo
  2. JGoodies
  3. Quaqua
4
Crazenezz

Ich weiß, dass diese Frage alt ist, aber wenn Sie FX nicht verwenden möchten und trotzdem Swing verwenden möchten, versuchen Sie es mit MacWidgets . Ich habe es in ein paar Projekten verwendet. Es ist sehr leicht und sieht gut aus. Unten ist ein altes Projekt, an dem ich gearbeitet habe. Im Laufe der Zeit habe ich Macwidgets perfektioniert und verwende es jetzt intern in meinem Unternehmen. 

http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png

2
Jesse Hernandez

Wie sieht es mit Nimbus aus? Oracle Link Werfen Sie auch einen Blick auf SO-Frage

2
keuleJ

QT ist recht umfangreich, aber auch sehr groß (aufgebläht) und komplex. Es gibt auch die SWT-Bibliothek, die beispielsweise von Open Office verwendet wird. SWT verwendet native UI-Widgets für Schaltflächen, Tabellen usw., bei denen Swing sie emuliert.

Der Trend geht jedoch eindeutig zum Schreiben von Rich-Client-Anwendungen für den Browser mithilfe von HTML und Javascript. Beide haben in den letzten Jahren große Fortschritte gemacht. 

HTML5 zielt speziell auf Rich-Client-Anwendungen mit Funktionen wie besseren Formularen und lokaler Datenbank ab, um getrennte Szenarien zu unterstützen (beachten Sie, dass diese letzte Funktion noch nicht standardisiert ist, jedoch von allen aktuellen Browsern implementiert wird).

Javascript hat jetzt leistungsfähige Bibliotheken mit jQuery und seinen vielen Plugins. Es gibt sogar Sprachen wie Coffeescript, mit denen Javascript mit einer einfacheren und leistungsfähigeren Syntax erzeugt werden kann.

Es ist auch nicht erforderlich, dass solche Apps eine Verbindung zu einem externen Server herstellen. Lokale Server mit kleinem Footprint (z. B. jetty, node.js, ...) und Datenbanken (SQLite, H2, ...) können auf dem Client installiert werden, um eine vollständig eigenständige Anwendung zu erstellen.

1
Alkaline

Swing ist gut (stabil, dokumentiert, unterstützt bis 2026). Das Problem ist, dass es auf das LookAndFeel-System angewiesen ist, das eine sehr begrenzte Anzahl von Boilerplate-Optionen bietet. Es sollte leicht sein, das Erscheinungsbild jeder Komponente individuell zu ändern und dann ihre Kreativität freizusetzen. Leider ist es schmerzhaft. IMHO-Frameworks sollten auf Swing basieren, um dies zu ermöglichen, anstatt JavaFX zu erstellen.

Werfen Sie einen Blick auf https://github.com/dotxyteam/ReflectionUI .

Ex GUI: http://javacollection.net/reflectionui/wp-content/uploads/2017/08/general.png

0
user3649688