web-dev-qa-db-fra.com

Comment créer une application de bureau Java "moderne"?

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?

47
sanity

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.

9
lrAndroid

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: Some of WebLaF components

Quelques objectifs principaux que je cible: 

  1. L & F de grande qualité et d'aspect moderne, avec prise en charge de tous les composants Swing
  2. Un vaste ensemble de composants supplémentaires que vous ne trouverez pas dans Swing standard
  3. Un grand ensemble de classes utilitaires pour vous aider à écrire le code

La bibliothèque WebLaF suggère également quelques autres avantages et caractéristiques uniques:

  1. C'est un projet open-source (sous licence GPLv3)
  2. Mise en forme facile des composants à l'aide du système Painters (en particulier avec des fichiers de 9 correctifs)
  3. Personnalisation rapide et facile du style "Web" par défaut
  4. Nombreuses fonctionnalités pour accélérer et simplifier la création d'interface d'application Swing

Vous pouvez essayer le demo-app pour voir s'il est moderne et assez simple :)

31
Mikle Garin

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());
9
Bringer128

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.

  • Soudainement, l'application de bureau devient une application serveur, accessible depuis un autre bureau. Nous avons pu promouvoir une application de bureau en tant que «portail» en quelques semaines.
  • La réécriture de l'application en termes de services Web (Ajax) permet une transition facile vers la création d'une pile de services complète REST (ou SOAP ...). L'application peut ensuite être intégrée à d'autres applications, facilement surveillée de l'extérieur, etc.
  • La prise en charge d'autres appareils (téléphones intelligents, tablettes, ...) devient beaucoup plus facile, en se concentrant uniquement sur la couche d'interface utilisateur
  • Au fur et à mesure que l'application grandit, la séparation des préoccupations est plus nette; Les développeurs travaillant sur l'interface utilisateur n'ont pas à jouer avec le code de bas niveau.
  • Il existe de nombreux excellents concepteurs et développeurs JS/HTML qui ne programment pas en Java.

MODIFIER

3 ans plus tard, cela est devenu extrêmement facile grâce à Electron

6
Bruno Grieder

Essayez l'une de celles-ci:

  1. JTattoo
  2. JGoodies
  3. Quaqua
4
Crazenezz

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

2
Jesse Hernandez

Qu'en est-il de l'apparence et de la sensation de Nimbus? Oracle Link Regardez également SO-Question

2
keuleJ

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.

1
Alkaline

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

0
user3649688