Interface homme-machine en Java avec AWT

publicité
Interface homme-machine en Java
avec AWT
Premier Cycle
Cours Eurinsa 2002
(c) P.Pollet
05/12/2002
Java 2001 (PP)
1
Plan
◆ Définition de AWT
◆ Les composants d ’interface (beans)
◆ Les gestionnaires de disposition
◆ Les événements
◆ Pour en savoir (beaucoup) plus
◆ Les successeurs d ’AWT
05/12/2002
Java 2001 (PP)
2
Définition de AWT
•’AWT fournit la couche d’interfaçage graphique portable :
•- éléments graphiques usuels : boutons, menus, champs de texte, barres de
défilement, ... utilisables dans les applets ou les applications
•- s’adaptent au visuel des différents environnements car bâtis avec les
fonctions natives : MS- Windows SDK, Unix OSF/ Motif toolkit, Mac System 7,...
•- dérivables pour les adapter à ses propres besoins
•- l’AWT fournit différents protocoles d’agencement des éléments graphiques
• Contient la définition conceptuelle des objets :
– - leur comportement et leur spécification
– - pas leur aspect graphique qui dépend de la plate- forme d’exécution
•Les inconvénients possibles :
– - en tentant d’être portable, l’AWT se prive de certaines fonctions graphiques
avancées de certains environnements
– - dans la version 1.0 : certains composants n’ont pas le même comportement sur
différents environnements
05/12/2002
Java 2001 (PP)
3
Les composants AWT
Du plus simple au plus évolué
◆ Les canevas :
– simples surfaces ou l ’on peut dessiner ou déposer des
images issues d ’URL.
◆ Les éléments d ’interface :
– bien connus comme les boutons, zone de texte,
étiquettes…Ils sont susceptibles de recevoir des événements
exterieurs (clavier, souris…)que l ’on doit intercepter et gérer.
◆ Les conteneurs:
– capables de contenir des canevas, des éléments ou d ’autres
containers. Emettent en plus des événements lors des
réorganisations, ouverture, fermeture… que l ’on peut
intercepter.
05/12/2002
Java 2001 (PP)
4
Les composants d ’interface (beans)
KIls héritent tous de Component ou de Container
05/12/2002
Java 2001 (PP)
5
Les gestionnaires de disposition
◆ Chaque Container possède un gestionnaire de disposition
(layout manager) par défaut.
◆ Chaque composant propose ses tailles minimale, maximale et
préférée.
◆ Le gestionnaire le place au mieux en fonction de la plate-forme.
◆ Gestionnaires standard:
–
–
–
–
–
FlowLayout
BorderLayout
GridLayout
CardLayout
GridBagLayout
mise en page de gauche à droite
4 cotés et un centre
une grille avec des cellules égales
onglets (un seul visible à la fois)
une grille avec des cellules de taille variables (puissant)
◆ Garantit la portabilité quelque soit la plate-forme.
05/12/2002
Java 2001 (PP)
6
Le gestionnaire FlowLayout
◆ Les composants sont placés de:
–
les uns après les autres, de gauche à droite selon leur taille préférée, avec un saut de
ligne dès que l ’espace manque.
◆ A l’intérieur d ’une ligne l’alignement peut être:
–
–
–
centré
à gauche
à droite
(FlowLayout.CENTER) par défaut
(FlowLayout.LEFT)
(FlowLayout.RIGHT)
◆ Exemple:
setLayout(new FlowLayout(FlowLayout.LEFT));
add (new Button (« B1 »));
add (new Button(« B2 »));
Panel p=new Panel(new FlowLayout()); // alignement centré par défaut
p.add(new Label (« étiquette: »));
p.add (new TextField (« »));
add(p);
05/12/2002
Java 2001 (PP)
7
Le gestionnaire FlowLayout (II)
◆ Résultat de l ’exemple:
◆ Après changement de taille de la fenêtre:
Le panneau p est
un composant
unique. Il passe donc
à la ligne suivante.
05/12/2002
Java 2001 (PP)
8
Le gestionnaire BorderLayout
◆ Le container possède cinq zones (NORTH, SOUTH, EAST,
WEST et CENTER).
◆ On place au maximum cinq composants dans ces zones par un
appel à add (Composant,BorderLayout.XXXX);
◆ Exemple:
import java.awt.*;
public class TestBl extends java.applet.Applet {
public void init() {
setLayout(new BorderLayout());
add (new Label (" north ",Label.CENTER),BorderLayout.NORTH);
add (new Label (" south ",Label.CENTER),BorderLayout.SOUTH);
add (new Label (" west "),BorderLayout.WEST);
add (new Label (" east "),BorderLayout.EAST);
add (new Button ("center "),BorderLayout.CENTER);
}
}
05/12/2002
Java 2001 (PP)
9
Le gestionnaire BorderLayout (II)
◆ Résultat de l ’exemple:
La taille des zones
dépend de la taille
préférée de chaque
composant.
◆ Après réduction de la fenêtre:
La taille de la zone
centrale est calculée
en dernier.
05/12/2002
Java 2001 (PP)
10
Le gestionnaire GridLayout
◆ Chaque composant est placé dans une cellule d ’une grille.
◆ On définit simplement le nombre de lignes et de colonnes.
◆ On ajoute les éléments de gauche à droite puis de haut en bas
par de simple add().
◆ Toutes les cellules ont la même taille !
// 2 colonnes et nombre de lignes automatique (0)
setLayout( new GridLayout( 0, 2, 10, 10));
add( b1 = new Button(" B1"));
add( b2 = new Button(" B2"));
add( b3 = new Button(" B3"));
add( b4 = new Button(" B4"));
add( p1 = new Panel());
p1. setLayout( new BorderLayout());
p1. add(new Label(" Un label"),BorderLayout.NORTH);
p1. add( new TextField(" Un champ de texte »),BorderLayout.SOUTH);
05/12/2002
Java 2001 (PP)
11
Le gestionnaire GridLayout
◆ L ’exemple sous Unix et Windows
◆ Notez que les cellules ont la même taille !
05/12/2002
Java 2001 (PP)
12
Le gestionnaire CardLayout
◆ N ’affiche qu ’un seul composant à la fois ( souvent des
panneaux qui ont eux_mêmes un gestionnaire de disposition).
◆ On ajoute les panneaux par des add()
◆ On passe d ’un panneau à un autre par:
– next() ou previous()
– first(), last()
◆ une mise en page de style « boite à onglets »
05/12/2002
Java 2001 (PP)
13
Le gestionnaire GridBagLayout
◆ Un gestionnaire GridLayout ou l ’on peut spécifier à l ’aide de
« contraintes de placement »:
– le nombre de cellules horizontales ou verticales occupées
par chaque élément.
– le mode de remplissage de cette cellule.
– l ’alignement éventuel dans la cellule.
◆ Puissant mais complexe…
◆ Mais toujours pas :
– des cellules de taille variable.
– la taille en points des cellules et des composants.
05/12/2002
Java 2001 (PP)
14
Les événements
◆ les événements sont des classes héritant de
java.awt.AWTEvent).
05/12/2002
Java 2001 (PP)
15
Les événements (II)
Types d événements.
◆ Evénements de bas niveau:
–
–
–
–
FocusEvent :changement de place du curseur
KeyEvent ou MouseEvent
ContainerEvent: composant a jouté ou supprimé
WindowEvent: ouverture, fermeture, reduction…
◆ Evenements de haut niveau:
–
–
–
–
ActionEvent : click, double click, menu, entrée sur une zone de texte…
ItemEvent: selection d ’une liste, boite déroulante…
AdjustmentEvent: barre déroulante.
TextEvent: changement du texte dans une zone de texte.
05/12/2002
Java 2001 (PP)
16
Les écouteurs d ’événements
Types d événements.
◆ Une hiérarchie d ’interfaces ( xxxListener) ou de classes
(xxxAdapter) qui doivent:
◆ S ’enregistrer auprès du composant en appelant sa méthode
addXXXListener() ou addXXXAdapter().
◆ Définir toutes les méthodes possibles pour les listeners (car
ce sont des interfaces) ou seulement celles qui nous
interessent pour les adapters.
◆ Exemple:
interface MouseListener {
public void MouseClicked( MouseEvent e);
public void MOuseReleased(MouseEvent e);
public void MousePressed(MouseEvent e);
...
05/12/2002
Java 2001 (PP)
}
Ces méthodes reçoivent
toutes en paramètre
l événement.
17
Les écouteurs d ’événements
Un exemple:
◆ On utilise très souvent une classe anonyme interne pour
alléger le code:
boutonGD.addActionListener (new java.awt.event.ActionListener() {
public void actionPerformed (ActionEvent e) { // surcharge actionPerformed initial
boutonGD_actionPerformed(e); // appel de la méthode à executer
}
});
◆ Ou alors on code directement dans actionPerformed():
bouton.addActionListener (new java.awt.event.ActionListener() {
public void actionPerformed (ActionEvent e) { // surcharge actionPerformed initial
label.setText (“ aie aie aie …”); // change le texte d’un label
bouton.setEnabled( false);
// et désactive toi !
}
Ces méthodes reçoivent
});
toutes en paramètre l ’événement.
05/12/2002
Java 2001 (PP)
18
Les successeurs d ’AWT
◆ JavaSoft pousse actuellement très fort à l ’utilisation de
SWING comme un successeur d ’AWT.
◆ Cette bibliothèque est beaucoup plus riche et puissante
mais:
– Elle nécessite pour les applications la version 1.2 minimum
du JDK ( pas vraiment un problème).
– Elle n ’est pas reconnue par les JVM des navigateurs
actuels. Il faut donc que tous les « clients possibles » ait
installés le « plug-in JRE2 » .
– La syntaxe de définition de l ’applette dans la page HTML
est beaucoup plus complexe.
05/12/2002
Java 2001 (PP)
19
Pour en savoir (beaucoup) plus
◆ http://cipcserveur/java/cours/awt/
05/12/2002
Java 2001 (PP)
20
Téléchargement