VNEMENTS 2021 09 08 IFT 1020 1 OBJECTIFS
ÉVÈNEMENTS 2021 -09 -08 IFT 1020 1
OBJECTIFS • Comprendre le modèle des évènements • Installer des auditeurs pour la souris et autres actions • Accepter et traiter des entrées de la souris et du clavier • Utiliser le Frame • Montrer du texte et utiliser le scroll bar 2021 -09 -08 IFT 1020 2
Codes • • • Espion. Souris. Applet Deplace. Baloune. Avec. Panneau Deplace. Baloune. Avec. Boutons Test. Frame 2021 -09 -08 IFT 1020 3
La classe Event • La source (des évènements) génère les évènements et gère les auditeurs Exemple: l’applet • L’auditeur est appelé lorsque les évènements surviennent Exemple: Mouse. Listener • La classe Event décrit l’évènement Exemple: Mouse. Event 2021 -09 -08 IFT 1020 4
Interface Mouse. Listener public interface Mouse. Listener { void // void // mouse. Pressed(Mouse. Event event); quand bouton souris est pressé sur une composante mouse. Released(Mouse. Event event); quand bouton souris est relâché d’une composante mouse. Clicked(Mouse. Event event); quand bouton souris est cliqué sur une composante mouse. Entered(Mouse. Event event); quand souris entre dans une composante mouse. Exited(Mouse. Event event); quand souris quitte une composante } 2021 -09 -08 IFT 1020 5
Allons voir les codes de Espion. Souris. java et Espion. Souris. Applet. java… 2021 -09 -08 IFT 1020 6
Un auditeur qui déplace une baloune • Obtenir la position de la souris à partir de l’objet Event • Appeler amener pour déplacer l’Attachee à une position donnée • Appeler repaint • repaint appelle la méthode paint • Toujours appeller repaint pour invoquer paint (ne jamais appeler paint directement!) 2021 -09 -08 IFT 1020 7
Allons voir Deplace. Baloune… 2021 -09 -08 IFT 1020 8
Les composantes du panneau de contrôle • Utiliser le package Swing javax. swing • Tous les noms de classes commencent avec J Exemples) JText. Field x. Field = new JText. Field(largeur); JLabel x. Label = new JLabel("x = "); JButton move. Button = new JButton(“Deplacer"); 2021 -09 -08 IFT 1020 9
Auditeur de bouton • Bouger la baloune lorsque le bouton est cliqué • Lire les variables x. Field et y. Field // Constructeur de l’Applet public Deplace. Baloune. Avec. Panneau() {. . . class Move. Button. Listener implements Action. Listener { public void action. Performed(Action. Event event) { int x =Integer. parse. Int(x. Field. get. Text ()); int y =Integer. parse. Int(y. Field. get. Text ()); ba. amener(x, y); repaint(); } }; // Creation du bouton JButton bouton = new JButton("Deplacer"); // Ajouter l’auditeur au bouton. add. Action. Listener(new Move. Button. Listener()); . . . } 2021 -09 -08 IFT 1020 10
Placer des composantes dans un JPanel • Un JPanel est un contenant (container) de composantes • On ajoute des composantes à un JPanel avec add JPanel panel = new JPanel(); panel. add(x. Label); panel. add(x. Field); . . . • Un contenant a besoin d’un cadre (frame) alors on place un JPanel dans un JFrame frame = new JFrame(); frame. set. Content. Pane(panel); • “Packer” un frame veut dire d’ajuster sa taille aux composantes ajoutées frame. pack(); frame. show(); 2021 -09 -08 IFT 1020 11
Allons voir le code de Deplace. Baloune. Avec. Panneau. java… 2021 -09 -08 IFT 1020 12
Imaginer plusieurs boutons qui auraient à peu près le même comportement • On ne veut pas écrire des codes différents pour des auditeurs “similaires” • Remède: Écrire une méthode qui ajoute l’auditeur : • On paramétrise les variables du comportement et la classe locale de l’auditeur a accès aux paramètres déclarés final 2021 -09 -08 IFT 1020 13
Méthode qui insère un auditeur public JButton faire. Bouton(String nom, final int dx, final int dy) { JButton bouton = new JButton(nom); class Auditeur. Bouton implements Action. Listener { public void action. Performed(Action. Event event) { ba. deplacer(dx, dy); repaint(); } }; bouton. add. Action. Listener(new Auditeur. Bouton()); return bouton; } 2021 -09 -08 IFT 1020 14
On crée plusieurs boutons qui contiennent leur auditeur • En appelant faire. Bouton plusieurs fois: panel. add(faire. Bouton( « 2021 -09 -08 Gauche", Droite", Haut ", Bas ", IFT 1020 -ba. rayon(), 0)); 0, -ba. rayon())); 0, ba. rayon())); 15
Allons voir le code de Deplace. Baloune. Avec. Boutons. java… 2021 -09 -08 IFT 1020 16
JFrame • Programme d’application, pas un Applet • Construire et montrer un Frame JFrame frame = new JFrame(); . . . frame. show(); • Opération de fermeture frame. set. Default. Close. Operation(EXIT_ON_CLOSE); • Ajouter des composantes à un panneau, ensuite mettre le panneau dans le Frame JPanel panel = new JPanel(); panel. add(. . . ) frame. set. Content. Pane(panel); 2021 -09 -08 IFT 1020 17
Composantes de texte contient une ligne de texte • JText. Area contient plusieurs lignes • Construit avec new JText. Area(rangees, colonnes) • text. Area. append(une. Chaine) ajoute du texte • text. Area. set. Editable(false) à utiliser pour l’affichage seulement • Pour ajouter une barre de défilement, utilisez • JText. Field JScroll. Pane scroll. Pane = new JScroll. Pane(zone. Texte); text. Area. set. Content. Pane(scroll. Pane); 2021 -09 -08 IFT 1020 18
- Slides: 18