> Tech > Créer son interface (GUI)

Créer son interface (GUI)

Tech - Par Renaud ROSSET - Publié le 31 janvier 2012
email

SWT est le Widget Toolkit for Eclipse. Un widget est un élément GUI (un bouton, un champ de texte, un arbre). IBM a décidé de créer SWT parce que, entre autres choses, elle voulait que nous puissions créer une application Java ressemblant plus à une application native

Créer son interface (GUI)

qu’à une application Java (pour plus de détails, demandez à Google « history of SWT »). SWT contient une couche dépendante de la plate-forme qui associe les widgets au widgets OS natifs. SWT utilise des ressources OS natives pour faire le tracé ; SWT a donc pour avantage de donner aux applications Java une personnalité (look and feel) 100 % native. Au premier coup d’œil, je ne pouvais pas croire qu’Eclipse était 100 % Java (sauf pour une petite couche SWT). Vous pouvez aussi utiliser la bibliothèque SWT en dehors d’Eclipse pour créer des applications Java d’apparence native. La figure 6 montre les différences d’aspect entre Swing et SWT.

Swing, l’UI Java native indépendante de la plate-forme, fait partir du SDK Java. Etant indépendant de la plate-forme, Swing doit faire lui-même tout le tracé. SWT a une couche native et laissera à la plate-forme le soin de faire le tracé. La différence est que les applications SWT ressemblent à des applications natives sur toutes les plates-formes (Windows, Apple, Unix) et que les applications Swing ressemblent aux applications Java sur toutes les plates-formes (cela ne dit pas tout, mais pour des raisons de place, je dois vous diriger vers Google si vous voulez approfondir les différences entre SWT et Swing). A mon avis, les deux frameworks sont remarquables, mais Eclipse et, par conséquent RDi, utilise SWT.

Pratique : créer la GUI

A présent, créons une GUI pour notre vue message-monitor. Il nous faut une boîte combinée pour sélectionner soit notre propre file d’attente de messages, soit QSYSOPR, un listener (écouteur) à activer quand un utilisateur change la sélection, et une case à cocher pour indiquer si nous voulons que les nouveaux messages nous soient signalés. Nous allons aussi créer un champ texte qui affiche les 50 premiers messages de la file d’attente. L’endroit pour cela est dans la méthode createPartControl de la vue. Ouvrez le code source de la vue en cliquant sur l’onglet avec le nom MessageMonitorView. Si l’onglet n’est pas là, vous pouvez l’ouvrir en trouvant le fichier dans le nœud src du projet dans la vue Package Explorer et en faisant un double clic dessus. Mettez le code provenant des deux sections précédentes dans votre MessageMonitorView Class. La première section (figure 7) va en haut de votre classe, et la seconde section (figure 8) contient le code qui doit aller dans votre corps de classe. Pour obtenir une copie de la source complète, allez sur ce site et sélectionnez Source 1. Supprimez toutes les lignes source dans l’éditeur et remplacez-les par les lignes source provenant du lien indiqué et sauvegardez le contenu (Ctrl + S).

Si vous tapez le code manuellement, vous verrez des erreurs. Elles s’expliquent par le fait que vous devez ajouter chaque classe Java utilisée comme une instruction importante dans votre source. Pour laisser à Eclipse le soin de résoudre automatiquement les entrées, sélectionnez Ctrl+Maj+O. Si Eclipse trouve plus d’une classe de même nom, il vous demandera de choisir la bonne. Par exemple, il y a trois kits UI à l’intérieur de Java et d’Eclipse. Si vous utilisez la classe Group, assurez-vous que c’est celle provenant de org.eclipse.swt et pas de javax.swing ou java.awt ; sinon, vous utiliserez le mauvais kit GUI et votre vue ne fonctionnera pas.

En B de la figure 8, nous définissons d’abord le layout du parent (qui est la zone sur laquelle nous traçons) en tant que GridLayout, qui est le layout le plus souple disponible. Quand nous redimensionnerons la vue, le layout redimensionnera automatiquement les widgets.

Puis, en C, nous créons la boîte combinée. La méthode setLayout (sous-routine) dit à SWT comment traiter le widget par rapport au layout. Pour voir les options disponibles, lisez la documentation Java du constructeur GridData. Ensuite, nous renseignons les rubriques de la boîte combinée et nous choisissons Me comme texte initial.

Puis, en D, nous attachons un listener à la boîte combinée. Un listener peut être comparé à un déclencheur de fichier physique : si les données changent, le listener est activé. Dans ce cas, le champ texte est mis à jour, afin que nous voyions quelque chose se passer si nous testons la vue.

Nous créons aussi un groupe en E contenant un bouton qui imite une case à cocher et une boîte spinner pour la gravité que nous voulons superviser. Nous y attachons un listener en F qui placera aussi l’action dans le texte. Le code dans le listener sera remplacé plus tard.

Finalement, en G, nous créons le widget Text, qui est un champ classe et non une variable locale. Les champs classe sont visibles dans toutes les méthodes et des variables de méthodes (locales) ne sont visibles que dans une méthode. Cela est défini en A.

Testons à nouveau notre vue. Allez à Manifest Editor, trouvez l’onglet Overview et sélectionnez le lien Launch an Eclipse application sous la section Testing. Si la vue est ouverte, vous pouvez essayer d’ouvrir la boîte combinée et sélectionner Me et QSYSOPR alternativement. Vous pouvez aussi cocher et décocher la case Alert when new messages arrive. Ce faisant, vous obtiendrez quelque chose de semblable à la figure 9, causé par les SelectionListeners que vous avez mis en œuvre pour la boîte combinée et le bouton.
 

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 31 janvier 2012