Page précédenteIndexPage suivante

CHAPITRE 9 - Notions générales graphiques

Ou comment réaliser une interface graphique en utilisant les classes swing... Nous développerons ici les notions générales du graphisme en Java.

9.1 - Le package Swing

Tous les objets java que nous allons utiliser proviennent du package : javax.swing. Fourni à partir du JDK 1.2, le package javax.swing est beaucoup plus riche que le package graphique basique AWT, sur lequel il se base. Ces deux packages ont beaucoup d'objets en commun mais javax.swing complète avantageusement java.awt .

Utilisation

Il faut tout d'abord importer les classes du package javax.swing. Ce package contient tous les objets de base pour créer une interface utilisateur conviviale: barre de défilement, boutons, boutons radio, saisie de texte, etc ...Les noms des classes Swing sont précédés d'un "J", ce qui les différencie de celles du package AWT :

En revanche on utilise encore l'AWT pour gèrer la plupart des événements et des mises en page ( Layout ).

Classes principales

Les objets les plus couramment utilisés avec Swing sont les classes :

 

Classe

Description

JFrame

Fenêtre graphique.

JPanel

Zone graphique, container

JButton

Objet bouton

JTextField

Zone de texte à saisir

JLabel

Texte non modifiable

JComboBox

Choix d'éléments dans une liste avec sélecteur

JScrollBar

Barre de défilement

JTable

Tableau

JList

Choix d'éléments dans une liste sans sélecteur

JCheckBox

Objet pouvant être coché ou décoché

JRadioButton

Choix exclusifs pour les options





9.2 - La philosophie graphique Java

La base d'une interface développée en Java est le panneau ( classe Panel ). Un panneau est un objet pouvant contenir les composants graphiques à afficher. Un panneau peut contenir d'autres panneaux. Il faut imaginer ce panneau comme une base de construction sur laquelle on peut poser d'autres éléments pour former une interface graphique. Pour comprendre la logique des éléments graphiques, il faut savoir que tous les éléments appartiennent à la classe Component.

Classes graphiques de Java


Les composants

Tous les objets graphiques Java sont des composants de la classe Component . Les objets swing sont des JComponent, classe fille de Component. Ces objets sont susceptibles d'être associés à des événements ( vus plus loin ) tels une sélection dans une liste déroulante ou un clic. Ils possèdent des méthodes de type addItemListener() qui les rendent sensibles aux événements. Les objets graphiques sont également appelés widgets.


Les containers

Un container ( classe Container ) est un composant possédant la faculté de contenir d'autres composants. Par exemple, un bouton ( JButton ) est un container car il peut contenir un titre ( JLabel ).


Les frames ou fenêtre

Une fenêtre ( classe JFrame ) est une fenêtre système autonome. Il est ainsi possible de développer facilement des applications multi-fenêtrées. La frame est un container qui possède un panneau racine dont la référence est donnée par la méthode getContentPane(). Un ajout de composants ou de containers dans ce dernier panneau permet de les afficher à l'écran. Attention! une JFrame ne peut contenir directement de composants graphiques, il faut utiliser son panneau racine.

Les applets

Une applet au sens général est une petite application s'exécutant à l'intérieur d'une autre application ( en général un navigateur web ). Dans le sens strict, un objet JApplet est un container pouvant contenir d'autres composants graphiques. Tout comme la JFrame, elle possède un panneau racine dont la référence est donnée par la méthode getContentPane(). Les composants graphiques sont alors posés sur ce panneau et s'affiche dans l'applet.


Gestionnaires de placement

Chaque container spécifie sa méthode de mise en page. C'est la façon dont sont positionnés les objets les uns par rapport aux autres. Les objets gérant cette mise en page sont des layouts. Un panel peut contenir d'autres panels dont chacun possède un layout diffèrent. Les gestionnaires de placement les plus courants sont les suivants :

FlowLayout

Il permet une mise en place séquentielle des composants. Par défaut ils s'affichent de la gauche vers la droite. Lorsqu'il n'y a plus de place sur une ligne, les objets sont affichés sur la ligne d'en dessous.

GridLayout

Le layout est créé en spécifiant le nombre de lignes et de colonnes et chaque composant graphique est affiché dans une cellule du tableau. Toutes les cellule font la même taille ( donc celle du plus grand élément ) .

BoxLayout

Le BoxLayout définit un 'empilage' des objets sur l'axe des X ou des Y. Il ressemble au FlowLayout mais il est plus complet car possède des attributs qui permettent un affichage plus facile et affiné.

Par défaut

Si on ne fixe pas de LayoutManager à notre panel, le premier élément posé dans ce dernier prend l'intégralité de l'espace disponible et masque les widgets ultérieurs. Dans ce cas, il est possible de placer les objets au pixel près par la méthode setBounds(int X,int Y,int width,int height) de la classe Component. Mais dans ce cas, il faut s'assurer que l'on n'utilise pas de layout et faire un setLayout(null).



9.4 - Les événements

Définition des événements et écouteurs

Un événement est un objet de type Event. Les événements sont générés lors d'une action de l'utilisateur sur l'interface. Par exemple, le clic sur un bouton peut générer un événement de type MouseEvent. Mais ces événements n'ont de conséquences sur le programme que si l'objet possède un écouteur ( listener ) à l'écoute. Dans l'exemple du bouton, si on clique sur ce dernier, le gestionnaire graphique Java génère un objet MouseEvent qui va être intercepté par un écouteur préalablement posé ( comme un MouseListener ). Alors le programme exécutera la méthode de traitement associée à l'écouteur, dans notre cas, le programme exécutera la méthode mouseClicked(MouseEvent me). Notez que les objets événement sont toujours générés dans une application graphique mais dans le cas où il n'y a pas d'écouteurs pour les intercepter, il n'y aura pas de traitements associés. Les écouteurs et événements courants font partie du package AWT. Il faut donc penser à faire un import du package java.awt.event. Les composants graphiques possèdent des méthodes spécifiques permettant de poser un écouteur. Par exemple, addActionListener(ActionListener al) permet de poser un écouteur de type 'action sur le composant' qui sait intercepter les ActionEvent comme le clic sur une liste défilante. Il existe des écouteurs pour chaque type d'événement. Les écouteurs sont toujours des interfaces. Ainsi la classe de développement courante devra implémenter toutes les méthodes de l'interface. La plupart du temps, il n'y en a qu'une. C'est cette méthode que le programme exécutera si l'événement se produit. Remarquons que si la classe courante implémente un ActionListener, elle devient elle-même un objet de type ActionListener. Par conséquent,les méthodes d'ajout d'écouteurs sur des composants graphiques comme addActionListener(ActionListener al) qui prennent en argument un ActionListener pourront prendre this en argument.

Ecouteurs courants

Listeners courants 

 Méthodes à implémenter

MouseListener

MouseClicked(MouseEvent e)

 

MouseEntered(MouseEvent e)

 

MouseExited(MouseEvent e)

 

MousePressed(MouseEvent e)

 

MouseReleased(MouseEvent e)

 

MouseDragged(MouseEvent e)

ActionListener ( exemple: les boutons )

 

 

ActionPerformed(ActionEvent e)

ItemListener ( exemple: les listes comme les ComboBox )

 

 

ItemStateChanged(ItemEvent e)

FocusListener

 

 

FocusGained(FocusEvent e)

 

FocusLost(FocusEvent e)

Il existe également des écouteurs pour gérer les actions sur une fenêtre ( WindowListener ), gérer la barre de défilement ( AdjustementListener ), etc...





TD 9 - Notions générales graphiques

Exercice 1 - Création de notre première interface graphique

Créer une interface graphique ( une fenêtre ) d'une taille de 320 pixels par 200 pixels qui porte le nom "TEST". Cette interface doit contenir :

Ajouter ses objets sur le panel principal, quel résultat voyez-vous ? Où est le problème ?

Exercice 2 - Mise en place d'une mise en page

Mise en place d'une mise en page de haut en bas sur cette même interface. Choisissez votre mise en page de manière à optimiser le placement.

Exercice 3 - Ajout des listeners


solutions





Page précédenteIndexPage suivante