Des questions similaires sont posées périodiquement, mais beaucoup de ces réponses sont obsolètes.
Je dois créer une application de bureau multi-plateforme en Java avec une interface graphique de qualité comparable aux applications de bureau contemporaines.
Swing est le choix par défaut, mais je n’ai pas encore rencontré une application Swing qui ne semblait pas, à tout le moins, assez désuète et maladroite (subjective, je sais, mais avec les interfaces graphiques, il est difficile d’éviter les jugements esthétiques).
Je remarque que le nouveau client Bitcoin utilise désormais QT avec les liaisons Java et possède une interface utilisateur attrayante, mais cela présente l’inconvénient 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 zéro, que feriez-vous pour son interface graphique?
Regardez dans la modification de l’apparence de votre programme Java. Cela vous permet de personnaliser le “thème” global de votre programme. Voici des informations sur la modification du LAF.
Je peux également vous proposer un nouveau LaF à examiner – WebLaF . J’y travaille actuellement pour apporter de nombreuses fonctionnalités d’interface utilisateur et rendre le travail avec Swing beaucoup plus facile pour tout le monde en utilisant simplement les fonctionnalités de base de la bibliothèque WebLaF.
Quelques exemples montrant à quoi ressemblent certains composants WebLaF:
Certains des principaux objectives que je cible:
La bibliothèque WebLaF suggère également quelques autres avantages et caractéristiques uniques:
Vous pouvez essayer l’ application de démonstration pour voir si elle est assez simple et moderne 🙂
Avez-vous examiné JavaFX 2.0 ? Il est conçu pour interagir facilement avec Swing, et dispose de nombreux contrôles «esthétiques» modernes.
En outre, comme lrAndroid le mentionne, 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 les grids par exemple), une plus grande variété de L & F et correspondent 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 “trucs modernes” sont sur le Web, et le Web moderne est aujourd’hui HTML + Javascript.
La surcharge de la conversion d’une application en “Web like” est minime. Une jetée intégrée peut restr très petite et l’espace disque est devenu beaucoup moins problématique.
Des avantages supplémentaires vont suivre cette voie pour les évolutions futures de l’application.
MODIFIER
3 ans plus tard, cela est devenu extrêmement facile grâce à Electron
Essayez l’un de ces:
Qu’en est-il de Nimbus? Oracle Link Jetez également un oeil à SO-Question
Je sais que cette question est ancienne, mais si vous ne voulez pas utiliser FX et que vous voulez toujours utiliser Swing, essayez MacWidgets , je l’ai utilisé sur quelques projets. C’est très léger et très beau. Ci-dessous est un ancien projet sur lequel je travaillais, au fil du temps, j’ai perfectionné en utilisant macwidgets et maintenant l’utiliser en interne dans mon entreprise.
http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png
QT est assez vaste mais aussi très grand et complexe. La bibliothèque SWT est également utilisée par les bureaux ouverts, par exemple. SWT utilise des widgets d’interface utilisateur natifs pour les boutons, les tables, etc., dans lesquels Swing les émule.
Cependant, la tendance est clairement à l’écriture d’applications client riches pour le navigateur en utilisant HTML et Javascript. Les deux ont fait d’énormes progrès ces dernières années.
HTML5 cible spécifiquement les applications clientes riches avec des fonctionnalités telles que de meilleurs formulaires et une firebase database locale pour prendre en charge des scénarios déconnectés (notez que cette dernière fonctionnalité n’est pas encore standardisée, mais est implémentée par tous les derniers navigateurs).
Javascript a maintenant des bibliothèques puissantes avec jQuery et ses nombreux plugins. Il existe même des langages comme Coffeescript qui peuvent être utilisés pour produire du Javascript avec une syntaxe plus simple et plus puissante.
Il n’y a pas non plus besoin de telles applications pour se connecter à un serveur externe. Des serveurs locaux de faible encombrement (ex: jetty, node.js, …) et des bases de données (SQLite, H2, …) peuvent être installés sur le client pour créer une application totalement autonome.