2010-08-07 4 views
3

Je suis vraiment confus sur ce qu'il faut utiliser. Les options que je vois sont awt, Swing et swt.Construire Java UI pour fonctionner sur toutes les plates-formes

Ma question est la suivante: quelle devrait être la meilleure pour l'application Desktop Java sur toutes les plateformes (Mac, Windows et Linux) avec un code dépendant de la plateforme minimale?

Répondre

5

AWT est obsolète, bien que certaines de ses classes et de son design constituent les fondements de l'API Swing.

Voici mon avis sur les différenciateurs entre la création d'applications Swing et SWT:

swing

  • + Forms partie de la plate-forme standard Java SE, la distribution si moins de migraines
  • + Vous pouvez créer un aspect cohérent sur toutes les plates-formes
  • + Les commandes sont légères, donc créer votre propre est relativement facile
  • - Si vous avez besoin d'applications Swing pour ressembler à des applications natives, il peut y avoir beaucoup de travail; Oscillation peut être de style avec une look'n'feel plate-forme, mais les résultats ne sont pas toujours assez proche pour la satisfaction de tous

SWT

  • + Facile à créer des applications simples qui utilisent des widgets natifs
  • - gestion des ressources Manuel
  • - Vous devez distribuer des bibliothèques spécifiques à la plateforme
  • - Vous faites face au problème le plus bas dénominateur commun - tous les widgets ne sont pas disponibles sur toutes les plateformes, donc certains seront personnalisés à SWT de toute façon

Bien que j'ai mis beaucoup plus contre SWT points négatifs, je n » t l'escompte.La technologie que vous choisirez dépendra des exigences de votre projet. La sélection de la bibliothèque n'est que le début en matière de développement de l'interface utilisateur. Swing est l'option facile à entretenir et je suis d'accord avec les autres affiches pour dire que c'est probablement la meilleure solution pour ce que vous voulez.

+0

qu'en est-il 'UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName());'? – Tedil

+0

@Tedil - Swing a parcouru un long chemin avec le support des LnF natives (surtout depuis 6u10), mais si votre concepteur d'interface utilisateur insiste sur une intégration parfaite, vous devrez peut-être contourner les bogues. Certaines personnes sont extraordinairement persistantes à vous embêter si quelque chose est à un pixel ou si l'algorithme anti-alias produit un type de flou légèrement différent. Vous pouvez suivre ces problèmes dans la base de données de bogues: http://bugs.sun.com – McDowell

5

Swing.

AWT est ancien et de niveau trop bas, SWT possède des composants natifs et n'est pas fourni avec JRE (il s'agit d'une bibliothèque tierce). Swing est de haut niveau (-ish) et pure-java.

+1

Peut-être inclure le fait que Swing est disponible dans toutes les exécutions Java pour le bureau, mais que SWT nécessite des dépendances externes. – extraneon

+1

Pourriez-vous s'il vous plaît ajouter plus d'informations pourquoi on ne devrait pas utiliser SWT? Ce n'est pas clair pour moi. Im usig et je n'ai pas de problèmes jusqu'à présent. – InsertNickHere

+1

@InsertNickHere - attendez jusqu'à ce que vous avez plus de Windows à déployer pour :) –

1

Je voudrais aller avec Swing comme le meilleur choix en utilisant ce qui est emballé avec Java. Cependant, même Swing peut vous faire sauter à travers les mêmes cerceaux à chaque fois, donc je vous recommande de regarder dans l'un des différents cadres qui construisent sur le dessus et gérer la plupart des travaux de construction d'une application.

Il y a un JSR pour un Swing Application Framework que j'ai utilisé quand il était encore en développement actif, mais il est actuellement gelé. Leur page de projet recommande un fork de ce projet, et un autre appelé GUTS qui utilise Google Guice comme injection de dépendance. Netbeans a également Netbeans Platform. Je sais que la portée de ces frameworks est en dehors des domaines de "UI", mais ils traitent des choses comme la liaison de données entre votre modèle et votre interface utilisateur que Swing ne fait pas.

Questions connexes