Introduction
Le paquetage AWT (Abstract Windowing Toolkit) contient différents outils permettant la réalisation d'applications graphiques.
- Un composant
(correspondant à une classe dérivée de la classe abstraite
Component
possédant une représentation graphique
ou de la classe
MenuComponent)
et qui peut donc être visualisée sur un écran
(bouton, liste déroulante, zone de dessin, menus,
barres de défilement,...). Ces deux classes sont des classes (abstraites)
origines de la hiérarchie des classes du paquetage.
-Un composant est destiné à être inséré dans un
conteneur,
c'est-à-dire un objet de la classe
Container qui
est elle_même une sous-classe de la classe
Component :
un tel objet est un composant susceptible de contenir d'autres composants AWT.
-Un gestionnaire de placement
implantant l'interface
LayoutManager
(par exemple
BoxLayout,
FlowLayout ou
GridLayout)
est en charge de la disposition des composants dans un conteneur.
Chaque conteneur dispose d'un gestionnaire de placement :
un gestionnaire par défaut est défini pour chaque conteneur,
mais il peut être modifié par la méthode
setLayout
de la classe
Container
La hiérarchie de classes de composantsts et de conteneurs est la suivante :
Les composants
- Parmi les autres sous-classes de la classe
Component
citons :
Button :
bouton étiqueté
Canvas :
une zone rectangulaire sur laquelle une application peut dessiner
ou peut recevoir des évènements extérieurs
CheckBox :
boîte de contrôle (bascule vrai/faux en y cliquant)
Choice :
choix multiple
Label :
texte à lire
List :
liste déroulante
ScrollBar :
barre de défilement
TextArea :
une zone de plusieurs lignes permettant d'afficher du texte
par des méthodes telles que
append(String str)
ou
void insert(String str, int pos)
TextField :
un composant texte permettant l'édition d'une seule ligne.
Dans l'applet suivante, les lignes tapées successivement dans l'instance de TextField sont recopiées dans l'instance de TextArea :
--> cat AppletTrois.java
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
public class AppletTrois extends Applet implements KeyListener{
private TextField field;
private TextArea texte;
public AppletTrois( ){
field = new TextField(40);
add(field);
texte = new TextArea(10, 20);
add(texte);
field.addKeyListener(this);
}
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == '\n'){
String str = field.getText();
field.setText("");
texte.append(str);
texte.append("\n");
}
}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
}
|
- Parmi les sous-classes de la classe
MenuComponent
citons :
MenuBar :
barre de menu
MenuItem
et ses deux sous-classes
Menu
et
CheckBoxMenu
--> cat UnMenu.java
import java.awt.*;
public class Menu2 extends MenuBar{
public MenuItem menuQuitter, menuNouveau;
public Menu2(){
Menu menuFichier = new Menu("Fichier");
menuNouveau = new MenuItem("Nouveau");
menuQuitter = new MenuItem("Quitter");
menuFichier.add(menuNouveau);
menuFichier.addSeparator();
menuFichier.add(menuQuitter);
Menu menuAide = new Menu("Aide");
add(menuFichier);
setHelpMenu(menuAide);
}
}
|
Les conteneurs
Ainsi que nous l'avons dit, il s'agit de composants particuliers
pouvant contenir d'autres composants. La classe
Container,
racine de la sous-hiérarchie des conteneurs, contient en particulier
différentes formes de méthodes
add
et remove
permettant respectivement l'ajout et la suppression d'un composant dans
le conteneur courant.
La classe Panel
Il s'agit du type de conteneur le plus simple. Le gestionnaire de placement
par défaut en est
FlowLayout
Une application peut y attacher tout type de composants.
Dans l'exemple suivant
--> cat Barre.java
import java.awt.*;
public class Barre extends Panel{
public Barre(){
Choice listeCouleurs = new Choice();;
Button quitter;
String nomCouleurs[] =
{"bleu", "vert", "rouge", "jaune"};
Color couleurs [] = {Color.blue, Color.green, Color.red,
Color.yellow};
setBackground(Color.lightGray);
for(int i=0; i
|
La classe Window
Il s'agit d'une fenêtre sans bord ni barre de menu dont le
gestionnaire de placement par défaut est de type
BorderLayout.
Lors de sa construction elle doit appartenir à une instance
de Frame
(ou une autre fenêtre ou une instance de
Dialog).
Les instances de cette clase sont des fenêtres avec titres et bordure qui sont typiquement utilisées pour acquérir des données de l'utilisateur. La classe Frame
Il s'agit d'une fenêtre avec titre et bordure
(gestionnaire par défaut
BorderLayout).
A sa création, une instance est invisible jusqu'à ce que
lui appliquée la méthode
show
Parmi les méthodes de la classe, citons
void setTitle(String titre)
--> cat Fenetre.java
import java.awt.*;
public class Fenetre extends Frame{
protected int largeur;
protected int hauteur;
public Fenetre(String titre, int largeur, int hauteur){
setTitle(titre);
this.largeur = largeur;
this.hauteur = hauteur;
setSize(largeur, hauteur);
show( );
}
}
--> cat AppliFenetre.java
import java.util.*;
public class AppliFenetre{
public static void main(String args[]){
int largeur, hauteur;
if (args.length < 3){
System.err.println("Erreur paramètre");
System.exit(1);
}
largeur = Integer.parseInt(args[1]);
hauteur = Integer.parseInt(args[2]);
new Fenetre(args[0], largeur, hauteur);
}
}
|
--> cat Fenetre2.java
import java.awt.*;
public class Fenetre2 extends Frame{
protected int largeur;
protected int hauteur;
public Fenetre2(String titre, int largeur, int hauteur){
this.largeur = largeur;
this.hauteur = hauteur;
setTitle(titre);
setSize(largeur, hauteur);
Button bouton1 = new Button("B1");
Button bouton2 = new Button("B2");
setMenuBar(new Menu2());
add(bouton1, "North");
add(bouton2, "South");
setBackground(Color.blue);
show();
}
}
--> cat AppliFenetre2.java
import java.util.*;
public class AppliFenetre2{
public static void main(String args[]){
int largeur, hauteur;
if (args.length < 3){
System.err.println("Erreur paramètre");
System.exit(1);
}
largeur = Integer.parseInt(args[1]);
hauteur = Integer.parseInt(args[2]);
new Fenetre2(args[0], largeur, hauteur);
}
}
|
--> cat Fenetre2.java
import java.awt.*;
public class Fenetre3 extends Frame{
protected int largeur;
protected int hauteur;
public Fenetre3(String titre, int largeur, int hauteur){
this.largeur = largeur;
this.hauteur = hauteur;
setTitle(titre);
setSize(largeur, hauteur);
Button bouton1 = new Button("B1");
Button bouton2 = new Button("B2");
setMenuBar(new Menu2());
add(bouton1, "North");
add(bouton2, "North");
setBackground(Color.lightGray);
setMenuBar(new Menu2());
add("North", new Barre());
show();
}
}
--> cat AppliFenetre3.java
import java.util.*;
public class AppliFenetre3{
public static void main(String args[]){
int largeur, hauteur;
if (args.length < 3){
System.err.println("Erreur paramère");
System.exit(1);
}
largeur = Integer.parseInt(args[1]);
hauteur = Integer.parseInt(args[2]);
new Fenetre3(args[0], largeur, hauteur);
}
}
|
La classe Dialog