This document was uploaded by user and they confirmed that they have the permission to share
it. If you are author or own the copyright of this book, please report to us by using this DMCA
report form. Report DMCA
Sommaire AWT : Abstract Window Toolkit Applet et application Frame, Panel et Layout Composants GUI Les menus Les layouts Les images Animations Les polices Gestion des événements
SWING Nouvelle hiérarchie Quelques composants Quelques Thèmes Les applets Les composants
1996-2003 - Java AWT SWING - Version du cours 2.8
2
1
Iremia, R.Courdier
AWT – SWING Présentation AWT Première interface graphique proposée par Sun Appel direct au système d’exploitation pour l’affichage des composants Interface différente selon l’OS Mais + rapide
Peu de composants
SWING Objectif : 100% de portabilité Les composants sont dessinés par Java (seuls les codes de base accèdent à l’OS via l’AWT) Aspect identique Plus gourmand en ressources
pas d’accès au disque pas de menus pas de boites de dialogues modales problèmes de gestions de boites de dialogues.
Points de vigilance temps de chargements Java propose les fichier JAR (Java ARchive) : compression dans un fichier signé chargeable en une seule transaction réseau de toutes les ressources d’une applet perte d’informations possible quand l’utilisateur change de page ou ferme son navigateur inopinément
//Fichier Applet1.java import java.applet.*; import java.awt.*; public class Applet1 extends Applet { public 1996-2003 - Java AWT SWING - Version du cours 2.8 5 void paint (Graphics g)
AWT : Abstract Window Toolkit Développement d’une Application Java Une application Java a l’avantage ultime d’être portable sur toutes les plate-formes informatiques majeurs : MS-Windows, UNIX OSF/Motif, Mac OS7/8, OS/2 Presentation Manager, etc.
// Fichier Appi.java import java.awt.*; public class Appli extends Frame { public Appli() { // constructeur joue le role // de la methode init() de // l’applet ... }
Il peut y avoir certaines modifications du look-and-feel de l’OS natif induites par l’AWT qui impose son propre mécanisme de gestion des éléments d’interfaces graphique. Attention a réaliser du code 100% “pure” Java. (...Java SDK 2.0 de Microsoft, encore lui... )
public static void main (...) { Appli app = new Appli(); app.show(); } }
AWT : Abstract Window Toolkit Principales classes “component“ de l’AWT Component : classe de base Container : gestionnaire de composants Window : Fenêtre sans bordure Frame : Fenêtre avec bordure Dialog : Boite de dialogue Panel : conteneur pour agencement Canvas : Fenêtre pour dessiner
Affiche le composant Masque le composant Retourne la taille largeur, hauteur Re-dimensionne le composant Défini une zone rectangulaire Active le composant Désactive le composant pour demander de rafraichissement Appelé par repaint(), par défaut efface le fond Appelé par update() Redessine le composant Retaille la fenêtre principale pour l’adapter au composant
1996-2003 - Java AWT SWING - Version du cours 2.8
8
4
Iremia, R.Courdier
AWT : Abstract Window Toolkit Principales autres classes de l’AWT dessin : la classe Graphics classe utilisée pour dessiner, afficher du texte, etc dans une Fenêtre exemple : drawLigne, drawRect, fillRect, fillPolygon, drawString, etc... cette classe possède également des méthodes pour changer de Font ou de Color L’accès à cette classe s’effectue généralement dans la méthode paint() des composants
Agencement : les classes Layout les “layout” permettent d’agencer les Components dans un Container Ne pas positionner par programme les composants graphiques. ...Problème de résolution d’écrans, de système d’exploitation,... Panel p = new Panel(); p.setLayout(new GridLayout(2,3));
Color Dimension Event Component Button ... Graphics Image Point MenuComponent MenuBar MenuItem Menu LayoutManager BorderLayout //West East Center // North South CardLayout //onglets simples FlowLayout //par défaut GridBagLayout//Grille flexible GridLayout //Grille
1996-2003 - Java AWT SWING - Version du cours 2.8
9
AWT : Abstract Window Toolkit Principaux types de layout
AWT : Abstract Window Toolkit La gestion d’un menu La barre de menu : la Classe MenuBar Frame fr = new Frame(); MenuBar mb = new MenuBar(); fr.setMenuBar(mb);
Menu déroulant de base : la classe Menu Menu menuFichier = new Menu (“Fichier”); Menu menuEdition = new Menu (“Edition”); Menu menuAide = new Menu (“Aide”); mb.add(menuFichier ); mb.add(menuEdition ); // menu d’aide positionné à droite de la barre mb.add(menuAide); setHelpMenu(menuAide);
AWT : Abstract Window Toolkit Les images Classe Image représente les images de fomats normalisés : GIF, JPEG, ...
Chargement d’une image : Différence de méthode selon le type de code : Application ou Applet Application : Toolkit tk= Toolkit.getDefaultToolkit(); Image uneImage = tk.getImage(“image.gif”);
AWT : Abstract Window Toolkit Animation Une animation consiste à afficher une suite d’images et à forcer le rafraîchissement public void paint(Graphics g) { g.drawImage(mesImage[numimage],x,y,this); }
Pour éviter le scintillement, méthode du doublebuffering // Buffer offscreen Image bufferImage; Graphics bufferGraphics; public void update(Graphics g) { // création d’une image non visible et son «Graphic» if (bufferImage==null) { bufferImage = createImage(getSize().width,getSize().height); bufferGraphics = bufferImage.getGraphics(); } // réalisation de tous nos dessins sur cette image paint(bufferGraphics);
}
// « transfert » de l’image sur l’écran g.drawImage(bufferImage,0,0,this);
AWT : Abstract Window Toolkit Les Polices de caractères Classe Font représente une police de caractères indépendante de l’OS
Récupération de la liste des polices disponibles String strFontTab []; strFontTab = (Toolkit.getDefaultToolkit()).getFontList(); system.out.println(“nombre de polices : “ + strFontTab.length); for (int i = 0; i< strFontTab.length; i++){ // affiche chaque nom de police Helvetica, Arial, ... system.out.println(strFontTab[i]); }
Sélection d’une Font : Label unLabel; // une zone de texte unLab.setFont(new Font(“Courier“, Font.Bold, 12);
Les évènements Programmation événementielle pilotage du code par des événements (si click de souris alors…) Les environnements actuels multi-fenêtres X Windows, MS-Windows, Mac OS,... utilisent ce principe
Principe Tout component peut déclencher un événement Chaque type d’événement est défini par une classe spécifique Lorsqu’un événement est déclenché il peut être capté par des “listeners” (écouteurs) qui réalisent alors des traitements appropriés La source d’un événement et les traitements associés sont séparés
Les évènements Quelques Listeners (écouteurs) Clavier: KeyListener Clicks de la souris: MouseListener Déplacement de la souris: MouseMotionListener Roulette de la souris: MouseWheelListener Ouverture,Femeture….Fenêtre: WindowListener Changement de valeur dans une zone de texte: TextListener Action (p.ex appui sur un boutton) : ActionListener HyperlinkListener, MenuListener…..
Les évènements Soit XXXEvent un Type d’Event peut être ActionEvent, KeyEvent, FocusEvent, MouseEvent,...
pour capter un événement XXXEvent on s’enregistre auprès du Event Handler avec un XXXListener unComponent.addXXXListener(new CListener()); // désactivation par : removeXXXListener(); on implémente notre Classe Listener class CListener implements XXXListener { ...// définir ici toutes les méthodes de XXXListener
} // OU lorsque XXXListener définit plusieurs méthodes
class CListener extends XXXAdapter { ...// définir ici certaines méthodes de XXXListener
AWT Le presse-papier “clipboard” Fonctionnalités offertes Java supporte un certain nombre de fonctionnalités du clipboard uniquement sur les String possibilité de copier un objet String dans le clipboard au format text et de lire un texte du clipboard dans un String le modèle de gestion du clipboard est extensible avec la notion de “Flavors”
Transferable clipData=cl.getcontents(...); try { ClipString = (String)clipData.getTransferData(DataFlavor.stringFlavor); catch { /* exception levé si pas de stringFlavor dans le clipboard ...*/ }
Sommaire AWT : Abstract Window Toolkit Applet et application Frame, Panel et Layout Composants GUI Les menus Les layouts Les images Animations Les polices Gestion des événements
Swing Les applets Comme un pluggin standard: Java Plug In Utilisation d'une autre balise que APPLET OBJECT dans le cas de Explorer. EMBED dans le cas de Netscape.