US

L'API Swing

Nous allons, dans le cadre de ce premier chapitre consacré aux interfaces graphiques, utiliser l'API Swing pour réaliser des interfaces graphiques simples et introduire la programmation évènementielle.

Java Foundation Classes

JFC (Java Foundation Classes) rassemble un grand nombre d'outils qui permettent de construire des interfaces graphiques. Dans cet ensemble d'outils, on retrouve notamment Swing qui permet de créer des composants graphiques et une API Java 2D qui permet de gérer des graphiques et du texte en deux dimensions.

Swing est donc disponible dans le JDK standard de Java et se présente sous la forme de 17 packages publics qui sont javax.swing.*. Lorsque l'on travaille avec des interfaces graphiques, il ne faudra pas oublier d'importer ces packages avec l'instruction import rencontrée au chapitre 4.

Composants d'une interface graphique

De quoi est composée une interface graphique ? L'élément principal est la fenêtre. La fenêtre est une entité qui contiendra les différents éléments de l'interface graphique. La fenêtre possède une barre de titre avec un titre et divers boutons pour gérer la fenêtre (la réduire, la maximiser ou la fermer). Ensuite, on a la partie de la fenêtre qui peut contenir d'autres éléments, on appelle cette partie conteneur et enfin, on a parfois une bordure à la fenêtre.

Une fenêtre
fig j10.2 Une fenêtre

Dans la partie conteneur d'une fenêtre, on va pouvoir placer toutes sortes de choses. On pourra y placer d'autres conteneurs ou alors ce qu'on appelle des composants. Un composant est une entité qui possède une certaine fonctionnalité et avec laquelle l'utilisateur peut interagir, vous connaissez surement les boutons, les zones de texte, les listes déroulantes, ...

Des composants
fig j10.3 Des composants

La figure j10.3 montre les deux composants principaux qui ont été ajoutés au conteneur de la fenêtre, on a un composant personnalisé qui trace une courbe et un bouton. On verra comment créer des composants personnalisés à la dernière section de ce chapitre.

Hiérarchie des classes

À chacun des éléments que nous venons de rencontrer est associée une classe Java. Ces différentes classes sont organisées d'une certaine manière dans l'API Swing et dans AWT étant donné que Swing se base sur une partie de AWT.

Voyons maintenant un peu ces différentes classes et la relation qui existe entre celles-ci. Une partie de l'hiérarchie des classes est représentée sur la figure suivante, n'hésitez pas à cliquer pour voir la version en taille réelle.

Hiérarchie des classes Swing
fig j10.4 Hiérarchie des classes Swing

Cette hiérarchie des classes est une hiérarchie qui se base sur la relation d'héritage entre les classes, comme on l'a vu au chapitre 9, il ne faut donc pas oublier qu'on a la relation is-a entre une classe fille et sa classe mère.

Sachez avant tout que les classes Component, Container, Window et Frame font partie de AWT, et les autres dont le nom commence par J font partie de Swing.

La partie AWT

On voit tout de suite qu'on retrouve la classe Component au sommet de la hiérarchie, cette classe représente un composant. Si cette classe se retrouve si haut dans la hiérarchie, on se rappelle que cela signifie qu'elle représente un concept très général, et souvent abstrait.

En effet, les composants sont les éléments de base pour la construction d'interfaces graphiques, et tous les autres éléments que nous utiliserons sont des composants (toutes les autres classes seront liées à la classe Component par la relation is-a.

Vient ensuite la classe Container qui représente des conteneurs, c'est-à-dire des éléments capables de contenir des composants. On a deux grands types de conteneurs : les fenêtres (la classe Window) et les composants Swing (la classe JComponent).

La partie Swing

Swing va donc spécialiser AWT sur deux points : tout d'abord, on retrouve la classe JFrame qui représente une fenêtre avec sa barre de titre, sa bordure et son conteneur. Étant donné qu'une fenêtre peut contenir d'autres composants, on a bien la relation JFrame is-a Container.

JFrame is-a Container
fig j10.5 JFrame is-a Container

Une fenêtre est donc un conteneur et peut contenir d'autres composants. De plus, une fenêtre est un composant, on pourra donc retrouver des fenêtres dans des fenêtres.

Enfin, Swing introduit les composants Swing par la classe JComponent. Lorsque l'on travaille avec Swing, on utilise des composants Swing et on les emboite les uns dans les autres, comme on le verra dès la section suivante pour créer les interfaces graphiques.

De nombreux composants Swing existent dans le JDK standard Java comme les boutons (JButton), les zones de texte (JTextArea), ... mais on peut également créér nos propres composants personnels comme celui qui affiche une courbe.

Swing est donc synonyme d'une grande richesse, d'une grande souplesse, et pour apprendre Swing complètement, il faudrait tout un tutoriel rien que pour ça, nous allons dans ce chapitre nous limiter aux bases et comprendre les concepts fondamentaux afin de vous permettre de poursuivre sans soucis votre apprentissage de Swing par après si vous le désirez.

  • Espace membre
  • Learning Center
  • Les forums
  • Livre d'or
  • Imprimer
  • Boutique
  • Info
  • Règlement
  • Erreur
  • Newsletter