Des questions similaires à celles-ci sont posées périodiquement, mais bon nombre de ces réponses sont obsolètes.
Je dois créer une application de bureau multiplate-forme en Java avec une interface graphique de qualité comparable aux applications de bureau actuelles.
Swing est le choix par défaut, mais je n'ai pas encore rencontré d'application Swing qui ne paraissait pas du tout démodée et maladroite (subjectif, je sais, mais avec les interfaces graphiques, il est difficile d'éviter les jugements esthétiques).
Je remarque que le nouveau client Bitcoin utilise maintenant QT avec des liaisons Java et dispose d'une interface utilisateur attrayante, ce qui présente toutefois le désavantage d'être qu'il ne s'agit plus de Java pur.
Une grande partie de ce que je trouve lorsque je recherche des bibliothèques liées à Swing a 5 ans ou plus, même si l'esthétique des applications de bureau a considérablement évolué depuis.
Si vous deviez créer une application de bureau Java à partir de rien, qu'utiliseriez-vous pour son interface graphique?
Envisagez de modifier l'apparence de votre programme Java. Cela vous permet de personnaliser le "thème" général de votre programme . Ici contient des informations sur le changement de fichier LAF.
Je peux également vous proposer un nouveau fichier LaF à examiner dans WebLaF . J'y travaille actuellement pour apporter de nombreuses fonctionnalités d'interface utilisateur et rendre le travail avec Swing beaucoup plus facile pour quiconque en utilisant simplement les fonctionnalités de base de la bibliothèque WebLaF.
Quelques exemples montrant à quoi ressemblent certains composants WebLaF:
Quelques objectifs principaux que je cible:
La bibliothèque WebLaF suggère également quelques autres avantages et caractéristiques uniques:
Vous pouvez essayer le demo-app pour voir s'il est moderne et assez simple :)
Avez-vous examiné JavaFX 2.0 ? Il est conçu pour s’interopérer facilement avec Swing et dispose de nombreuses commandes "esthétiques" modernes.
En outre, comme le mentionne lrAndroid, une application Swing peut ressembler à une application native si vous définissez l'apparence du système avec:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Les frameworks Javascript modernes (ExtJS, Dojo, etc ...) offrent la même richesse de widgets ou plus (Excel comme des grilles par exemple), une plus grande variété de L & F et s'adaptent généralement mieux au système d'exploitation de l'utilisateur. Les utilisateurs sont également très à l'aise avec leurs navigateurs et, hé, les "éléments modernes" sont sur le Web, et le Web moderne s'appelle aujourd'hui HTML + Javascript.
La surcharge de la conversion d'une application en "Web like" est minime. Une jetée intégrée peut rester très petite et l'espace disque est devenu un problème beaucoup moins grave.
Cette évolution présente des avantages supplémentaires pour les futures évolutions de l'application.
MODIFIER
3 ans plus tard, cela est devenu extrêmement facile grâce à Electron
Je sais que cette question est ancienne, mais si vous ne voulez pas utiliser FX et que vous voulez quand même utiliser Swing, essayez alors MacWidgets , je l’ai déjà utilisé pour quelques projets. Il est très léger et a fière allure. Ci-dessous, un ancien projet sur lequel je travaillais. Au fil du temps, j'ai perfectionné l'utilisation de macwidgets et l'utilise maintenant en interne dans mon entreprise.
http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png
Qu'en est-il de l'apparence et de la sensation de Nimbus? Oracle Link Regardez également SO-Question
QT est assez vaste mais aussi très gros (ballonné) et complexe. Il existe également la bibliothèque SWT utilisée par Open Office, par exemple. SWT utilise des widgets d’interface utilisateur natifs pour les boutons, les tables, etc., où Swing les émule.
Cependant, la tendance est clairement à l'écriture d'applications client riches pour le navigateur en HTML et Javascript. Tous deux ont fait d'énormes progrès ces dernières années.
HTML5 cible spécifiquement les applications client riches avec des fonctionnalités telles que de meilleurs formulaires et une base de données locale pour prendre en charge les scénarios déconnectés (notez que cette dernière fonctionnalité n'est pas encore normalisée mais qu'elle est mise en œuvre par tous les navigateurs les plus récents).
Javascript a maintenant des bibliothèques puissantes avec jQuery et ses nombreux plugins. Il existe même des langages tels que Coffeescript qui peuvent être utilisés pour produire du Javascript avec une syntaxe plus simple et plus puissante.
Il n'est pas non plus nécessaire que ces applications se connectent à un serveur externe. Des serveurs locaux à faible encombrement (par exemple: jetty, node.js, ...) et des bases de données (SQLite, H2, ...) peuvent être installés sur le client pour en faire une application entièrement autonome.
Le swing est bon (stable, documenté, soutenu jusqu'en 2026). Le problème est qu’il repose sur le système LookAndFeel, qui offre un nombre très limité de choix de passe-partout. Il devrait être facile de modifier l'apparence de chaque composant individuellement, puis de laisser libre cours à sa créativité. Malheureusement, c'est douloureux. Les frameworks IMHO doivent être construits sur Swing pour le rendre possible au lieu de créer JavaFX.
Jetez un coup d’œil à https://github.com/dotxyteam/ReflectionUI .
Ex GUI: http://javacollection.net/reflectionui/wp-content/uploads/2017/08/general.png