Transcript
Page 1: Chapitre4 cours de java

Langage JAVAPof: R. EL AYACHI

Département d’informatiqueFaculté des Sciences et Techniques

Béni Mellal

1

Page 2: Chapitre4 cours de java

Chapitre 4: Interfaces graphiques

A. Package java.awt1. Possibilités de java.awt2. Principales classes de java.awt3. Composants de l’interface graphiques4. Gestionnaires de mise en page5. Conteneurs6. Evénements et actions

B. Package javax.swing1. Possibilités de javax.swing2. Paquetages de javax.swing3. Principaux composants de javax.swing4. Principaux conteneurs de javax.swing5. Eléments décoratifs

Prof: R. EL AYACHI2

Page 3: Chapitre4 cours de java

* En java, il existe plusieurs paquetages dédiés au graphisme, les plus utilisés sont: java.awt (Abstract Windowing Toolkit) fournit au programmeur toutes les classes nécessaires à la gestion du graphisme. javax.swing offre beaucoup plus de composants que le paquetage java.awt . Il permet de réaliser de véritables interfaces homme-machine.

* Principes de base de awt et swing: Créer un cadre Créer des composants Utiliser une mise en page pour ces composants Insérer les composants dans un cadre Utiliser des méthodes en réponse aux actions de l’utilisateurs

Introduction

Prof: R. EL AYACHI3

Page 4: Chapitre4 cours de java

Chapitre 4

Prof: R. EL AYACHI4

Package java.awt

Page 5: Chapitre4 cours de java

Avec java.awt, on peut par exemple: Tracer différentes formes (rectangles, ovales,…) Définir des polices des caractères, des couleurs… Créer des composants simples tels que boutons, cases à cocher, libellés, … Créer des composants plus complexes tels que boites de dialogue, menu déroulants, …Gérer des événements des utilisateurs (clique sur un bouton, …)

1. Possibilités de java.awt

Prof: R. EL AYACHI5

Page 6: Chapitre4 cours de java

1. Classe GraphicsLa classe java.awt.Graphics comporte un nombre important de méthodes permettant de tracer des formes géométriques vides ou pleines.Parmi les méthodes, on trouve:- drawLine(int x1,int y1,int x2,int y2)- drawString(String texte,int x,int y)- drawRectangle(int x,int y,int larg,int haut)- fillRectangle(int x,int y,int larg,int haut)- drawOval(int x,int y, int larg,int haut)- fillOval(int x,int y, int larg,int haut)- drawPolygon(xpoints,ypoints,points)- fillPolygon(xpoints,ypoints,points)

2. Principales classes de java.awt

Prof: R. EL AYACHI6

Page 7: Chapitre4 cours de java

2. Classe ColorLa classe java.awt.Color permet la gestion de couleurs en java. Les couleurs peuvent être spécifiées de plusieurs manières:- Noms standards prédéfinis (black, blue, red, orange, green, …):

Color.nom_couleur - Trois nombres entre 0 et 255 (trois couleurs RGB):

Color macouleur=new Color(150,200,250)- Trois nombres floats entre 0.0 et 1.0:

Color macouleur=new Color(1.0f,0.5f,0.7f)Remarques:

- La méthode setColor() de java.awt.Graphics : Afficher un texte ou un graphique dans une couleur spécifique.- La méthode setBackground(): Définir la couleur de l’arrière plan

2. Principales classes de java.awt

Prof: R. EL AYACHI7

Page 8: Chapitre4 cours de java

3. Classe FontL’affichage d’un caractère est définit par trois éléments:

- Nom de la police: Times Roman, Courier, Helvetica, …- Style de la police: gras, italique ou normal- Taille de la police en points

Pour afficher un texte dans une police définie, avec un style défini et une taille précise, on doit déclarer un objet Font contenant ces informations. Le constructeur de la classe Font est:

Font(String nom,int style,int taille)Le style peut être l’une des constantes: Font.PLAIN, Font.BOLD, Font.ITALICRemarque: La méthode getFontList() de java.awt.Toolkit affiche la liste des polices

2. Principales classes de java.awt

Prof: R. EL AYACHI8

Page 9: Chapitre4 cours de java

Tracer les formes géométriques suivantes:

Exercice1

Prof: R. EL AYACHI9

Page 10: Chapitre4 cours de java

En java, les éléments de l’interface utilisateur sont des composants. C’est-à-dire des objets dérivant de la classe java.awt.Component. Chaque type d’objet de l’interface graphique (bouton, texte, case à cocher, …) est une classe dérivée de Component.

La classe java.awt.Container, qui hérite de Component est capable de contenir plusieurs objets de la classe Component. Par exemple un objet de la classe Container peut contenir 2 boutons, 2 cases à cocher, …

Pour utiliser des composants tels que des zones de saisie et des boutons dans un programme java, il faut créer un objet composant et l’ajouter à l’aide de la méthode add() de la classe java.awt.Component.

3. Composants de l’interface graphique

Prof: R. EL AYACHI10

Page 11: Chapitre4 cours de java

1. BoutonsLes boutons sont les contrôleurs de tout écran d’interface, ils permettent de déclencher des événements que l’on peut détecter et traiter.Java permet d’utiliser les boutons d’une manière simple et efficace. La classe java.awt.Button déclare des constructeurs et des méthodes appropriées.Pour utiliser un bouton, il faut d’abord le créer en instanciant la classe Button puis l’ajouter à l’interface à l’aide de la méthode add().

Prof: R. EL AYACHI11

3. Composants de l’interface graphique

Page 12: Chapitre4 cours de java

Prof: R. EL AYACHI12

Code source de l’applet://Fichier: DemoBouton.javaimport java.applet.*;import java.awt.*;public class DemoBouton extends Applet{ Button monBouton1; Button monBouton2; public void int() { monBouton1=new Button(); monBouton2=new Button(); monBouton1.setLabel(‘’bouton 1’’); monBouton2.setLabel(‘’bouton 2’’); add(monBouton1);

add(monBouton2); }}

Code source du fichier HTML:<HTML> <HEAD>

<TITLE> Exemple de bouton</TITLE> </HEAD> <BODY>

<APPLET CODE=″DemoBouton.class″ width=400 height=200>

</APPLET> </BODY></HTML>

3. Composants de l’interface graphique

Page 13: Chapitre4 cours de java

2. EtiquettesUne étiquette (label) est une chaine de caractères qui ne dépasse pas une ligne et qui permet d’afficher un texte qui n’est pas interactif.Une étiquette peut être positionnée avec les fonctions de mise en page. Son rôle consiste à donner des informations sur les autres contrôles, notamment les zones de saisie.Pour accéder à une étiquette, il faut d’abord déclarer un objet de la classe java.awt.Label.

Label etq=new Labet(″Je suis une étiquette″);add(etq);

On peut modifier le texte d’un label en appelant la méthode setText(): etq.setText(″Le nouveau texte″);

Prof: R. EL AYACHI13

3. Composants de l’interface graphique

Page 14: Chapitre4 cours de java

Prof: R. EL AYACHI14

import java.awt.*;class DemoLabel extends Frame{ Label monEtiquette; DemoLabel(String titre) {

super(titre);monEtiquette = new Label(″Une étiquette″);add(monEtiquette);

} public static void main(String[] argv) { DemoLabel monLabel = new DemoLabel(″Affichage Etiquette″); monLabel.setSize(400,400);

monLabet.setVisible(true); }}

3. Composants de l’interface graphique

Page 15: Chapitre4 cours de java

3. Boîtes de dialoguesa. Cases à cocherUn composant Checkbox est une case placée à côté d’une ligne de texte et qui peut être cochée par l’utilisateur.Chaque case à cocher (Checkbox) représente un état booléen, vrai ou faux selon qu’elle est cochée ou non.Pour gérer les cases à cocher, on utilise la classe java.awt.Checkbox Checkbox cb = new Checkbox(); // créer une case à cocher Checkbox cb = new Checkbox(String); // créer une case à cocher et afficher le texte en argument à côté de la caseEtat d’une case à cocher:

cb.setState(booleen); //true si activée, false sinonbooleen etat=cb.getState(); //true si activée, false sinoncb.getState(); //retourne la chaîne de caractères correspondant à

l’étiquette de la case à cocher

Prof: R. EL AYACHI15

3. Composants de l’interface graphique

Page 16: Chapitre4 cours de java

Pour savoir si une action a été déclenchée par l’utilisateur (pression d’un bouton, coche d’une case,…), il faut redéfinir la méthode: public booleen action(Event e,Object arg).La méthode action est appelée automatiquement traite les événements survenus pendant l’exécution de l’application ou l’applet. L’objet arg retourne le nom du bouton actionné, ou de la case cochée,…

Prof: R. EL AYACHI16

3. Composants de l’interface graphique

Page 17: Chapitre4 cours de java

Prof: R. EL AYACHI17

import java.awt.*;public class DemoCheckbox extends Frame{ static booleen etat=true; Checkbox test; DemoCheckbox(String titre) {

super(titre);FlowLayout fl=new FlowLayout();

//gestionnaire de la mise en page

setLayout(fl);test=new Checkbox(″TEST″);add(test);

} public booleen action(Event e,Object arg) {

if(test.getState()) {etat=true; repaint();}else {etat=false; repaint();}retunr (true);

}

Public void paint() {

g.setColor(Color.red);g.setFont(″Helevetica″,Font.BOLD,20);if(etat==true) g.drawString(″Case activée″,50,300);else g.drawString(″Case désactivée″,50,300);

} public static void main(String[] arg) {

DemoCheckbox maCase=new Checkbox(″Case à cocher″);

maCase.setSize(400,400);macase.setVisible(true);

}}

3. Composants de l’interface graphique

Page 18: Chapitre4 cours de java

b. Boutons radioUne case à cocher peut être affichée individuellement ou dans un groupe. Les boutons radio sont des cases à cocher rassemblées dans un groupe. A l’intérieur du groupe, on ne peut activer qu’une seule case à la fois. La classe java.awt.CheckboxGroup permet de créer des groupes de boutons radio.

CheckboxGroup br;Checkbox b1=new Checkbox(″Etiquette1″,etat1,br);… Checkbox bn=new Checkbox(″Etiquetten″,etatn,br);

Prof: R. EL AYACHI18

3. Composants de l’interface graphique

Etiquetten est l’étiquette du bouton radio

etatn est l’état du bouton:

true ou false

br est le nom du groupe des

boutons radio

Page 19: Chapitre4 cours de java

4. Listes déroulantesLes listes déroulantes sont des composants très appréciés dans les interfaces utilisateurs. Ils permettent de sélectionner des éléments dans une liste.a. Listes à choix uniqueJava permet de créer une liste déroulante à choix unique par l’intermédiaire de la classe java.awt.Choice.l’objet Choice permet à l’utilisateur de choisir une valeur unique parmi une liste. La syntaxe est la suivante:

Choice maListe=new Choice();maListe.addItem(″choix 1″);… maListe.addItem(″choix n″);

Prof: R. EL AYACHI19

3. Composants de l’interface graphique

Page 20: Chapitre4 cours de java

Gestion des sélections:maListe.select(indice); //sélectionne un élément par son indicemaListe.select(élément); //sélectionne un élément par son contenumaListe.countItems(); //retourne le nombre d’éléments de la listemaListe.getItem(n); //retourne le contenu de l’élément nmaListe.getSelectedItem(); //retourne le contenu de l’élément sélectionnémaListe.getSelectedIndex(); // retourne l’indice de l’élément sélectionné

Prof: R. EL AYACHI20

3. Composants de l’interface graphique

Page 21: Chapitre4 cours de java

b. Listes à choix multipleUne liste à choix multiple permet d’afficher une liste de choix dans un cadre. Elle permet d’afficher plusieurs lignes et la sélection de plusieurs lignes.Pour gérer une liste à choix multiple, on doit faire appel à la classe java.awt.List.La classe List contient plusieurs constructeurs, le plus intéressant est List(int i,booleen valeur). Le premier paramétre i définit le nombre de lignes qui seront affichées, et la valeur indique si l’on autorise la sélection multiple (true) ou non.Une fois l’instance crée, on ajoute des propositions avec addItem(String).

Prof: R. EL AYACHI21

3. Composants de l’interface graphique

Page 22: Chapitre4 cours de java

La classe List dispose d’un grand nombre de fonctions pour gérer et consulter les informations mémorisées:List li=new List(nbligne,multiSelect); //déclare et initialise une liste

li.addItem(String s); //ajoute l’élément s à la fin de la liste lili.addItem(String s,int indice); //ajouter l’élément à la position indiceli.delItem(int indice); //supprime l’élément qui est à la position indiceli.delItems(int id1,int id2); //supprime les éléments entre id1 et id2li.clear(); // efface complètement le contenu de la listeli.countItems(); //retourne le nombre d’éléments de la listeli.getItem(indice); //retourne une chaine de caractères représentant le contenu

de l’élément à la position indiceli.select(indice); //sélectionne l’élément à la position indiceli.setMultipleSelections(); // retourne un booléen true si la sélection multiple

est autorisée, false sinon…

Prof: R. EL AYACHI22

3. Composants de l’interface graphique

Page 23: Chapitre4 cours de java

5. Zones de saisie:Pour recueillir les saisies de l’utilisateur dans une applet, le package awt propose la classe TextField. Par définition, le champ de texte se limite à une seule ligne. Il est généralement associé à un bouton qui sert à confirmer la saisie.les quatre constructeurs disponibles sont:TextField(): déclare un objet de la classe TextFieldTextField(int): déclare un objet TextField et fixe le nombre

maximum de caractères à saisirTextField(String): déclare un objet TextField et fixe un texte

par défautTextField(String,int): déclare un objet TextField et fixe un texte par défaut et le nombre maximum de caractères à saisir

Prof: R. EL AYACHI23

3. Composants de l’interface graphique

Page 24: Chapitre4 cours de java

Lecture d’un champ de texte:getText(); //retourne la chaine de caractères saisies

getColumns(); //retourne le nombre de caractères prédéfiniessetEchoChar(); //Saisir une information confidentielle (mot de passe par exemple)

Zone de texte multiligne:La classe java.awt.TextArea permet la saisie multiligne. Les quatre constructeurs disponibles sont:TextArea(): déclare un objet de la classe TextAreaTextArea (int nbLignes,int nbColonnes): déclare un objet TextArea et fixe le

nombre de lignes et de colonnesTextArea(String): déclare un objet TextArea et initialise le contenu

par défautTextArea(String,nbLignes,nbColonnes): déclare un objet TextArea, initialise le contenu et fixe le nombre de lignes et de colonnes

Prof: R. EL AYACHI

24

3. Composants de l’interface graphique

Page 25: Chapitre4 cours de java

Lecture et modification du contenu d’une zone texte:getText(); //retourne une chaine de caractères qui est le contenu de la zonegetSelectedText(); //retourne une partie du texte sélectionnéegetColumns(); //retourne le nombre de colonnesgetRows(); //retournele nombre de lignesinsertText(Text,n); //insère la chaîne Text à partir de nème caractère

Prof: R. EL AYACHI25

3. Composants de l’interface graphique

Page 26: Chapitre4 cours de java

Lorsqu’on place des composants dans une applet ou une fenêtre graphique, leur emplacement à l’écran se fait de manière automatique et d’une façon variable. La disposition des différents composants dépend de la taille de la fenêtre et de la taille des autres composants à ajouter.

On peut changer la disposition des différents composants en utilisant un gestionnaire de mise en page spécifié. Il existe plusieurs gestionnaires de mise en page, chacun positionnant différemment les éléments graphiques.

Tous les gestionnaires de mise en page implémentent l’interface java.awt.LayoutManager. Pour sélectionner un gestionnaire de mise en page, on utilise la méthode setLayout(LayoutManager) de la classe Container.

Les gestionnaires de mise en page les plus utilisés sont:

4. Gestionnaire de mise en page

Prof: R. EL AYACHI26

Page 27: Chapitre4 cours de java

1. FlowLayout:La classe FlowLayout (mise en page flot) place les composants ligne par ligne de gauche à droite. C’est la disposition par défaut, celle qui sera utilisée si l’on ne choisit pas un autre gestionnaire.Déclaration d’un objet de la classe FlowLayout:FlowLayout fl1 = new FlowLayout();FlowLayout fl2 = new FlowLayout(int); /* orientation des éléments

(CENTER, LEFT et RIGHT)*/FlowLayout fl3 = new FlowLayout(int,int,int); /* 1ier argument définit l’orientation, le 2ème argument définit l’espacement horizontal et le 3ème argument définit l’espacement vertical.*/

4. Gestionnaire de mise en page

Prof: R. EL AYACHI27

Page 28: Chapitre4 cours de java

2. BorderLayout:Lorsqu’on utilise BorderLayout, on peut placer les éléments dans 5 zones différentes: North, South, East, West et Center.Déclaration d’un objet de la classe BorderLayout:BorderLayout bl1 = new BorderLayout();BorderLayout bl2 = new BorderLayout(int,int); /* le 1ier argument définit l’espacement horizontal et le 2ème argument définit l’espacement vertical entre les composants*/

4. Gestionnaire de mise en page

Prof: R. EL AYACHI28

Page 29: Chapitre4 cours de java

3. GridLayout:La classe GridLayout organise tous les composants d’un conteneur en grille (lignes et colonnes). Le même espace est affecté à tous les composants. Lorsqu’on instancie GridLayout, on doit spécifier le nombre de lignes et de colonnes. Les éléments sont ajouités dans la grille de gauche à droite, de haut en bas.Déclaration d’un objet de la classe GridLayout:GridLayout gl1 = new GridLayout(int,int); /* le 1ier argument définit le nombre de lignes et le 2ème argument définit le nombre de colonnes*/GridLayout gl2 = new GridLayout(int,int,int,int); /* les deux derniers arguments spécifient l’espacement horizontal et vertical des composants*/

4. Gestionnaire de mise en page

Prof: R. EL AYACHI29

Page 30: Chapitre4 cours de java

4. GridBagLayout:La classe GridBagLayout est la plus puissante des gestionnaires de mise en page, mais elle est également la plus difficile à utiliser. La grille est divisée en cellules égales. Mais pour faciliter les ajustements, un composant peut occuper plusieurs cellules de la grille. On introduit par ailleurs un objet de la classe BridBagConstraints qui donne des indications de positionnement et de dimension à l’objet GridBagLayou.Variables d’instance pour manipuler un objet GridBagLayoutgridx et gridy: elles contiennent les coordonnées de l’origine de la grillegridwidth et gridheight: elles définissent combien de cellules va occuper un

composantGridBagConstraints.REMAINDER: spécifie que le prochain composant inséré va être le dernier de la ligne ou de la colonne couranteGridBagConstraints.RELATIVE: utilisé pour placer un composant après le dernier composant d’une ligne ou d’une colonne

4. Gestionnaire de mise en page

Prof: R. EL AYACHI30

Page 31: Chapitre4 cours de java

Déclaration des objets de GridBagLayout et GridBagConstraintsGridBagLayout gbl = new GridBagLayout();GridBagConstraints gbc = new GridBagConstraints();

4. Gestionnaire de mise en page

Prof: R. EL AYACHI31

Page 32: Chapitre4 cours de java

Pour mettre en service les différents composants déjà vu (boutons, listes, …), il faut toujours les incorporer dans un objet d’une classe dérivée de la classe abstraite Container. Les conteneurs les plus utilisés sont: Panel et Frame.1. Panel:Le conteneur Panel est un panneau qui sert essentiellement à ranger les composants. La classe Panel est simple, elle ne contient qu’un seul constructeur et une seule méthode add().

Panel p = new Panel(); // définit un nouveau panneauadd(p); // intègre le panneau p dans un autre conteneur

Un panneau peut lui-même contenir d’autres conteneurs. Ainsi des panneaux peuvent être emboités.

5. Conteneurs

Prof: R. EL AYACHI32

Page 33: Chapitre4 cours de java

2. Frame:Une frame ou encadrement permet de créer une fenêtre à l’extérieur de l’applet qui s’exécute comme une application indépendante. La classe Frame contient deux constructeurs:

Frame f = new Frame(); /* création d’une fenêtre d’encadrement invisible*/

Frame f = new Frame(String); /* création d’une fenêtre d’encadrement invisible avec un nom de la

fenêtre*/

5. Conteneurs

Prof: R. EL AYACHI33

Page 34: Chapitre4 cours de java

Les interactions de l’utilisateurs avec l’interface (par exemple cliquer sur la souris, taper sur une touche du clavier, presser un bouton,…) sont appelés événements. On dit que l’on « traite un événement » lorsqu’on prend en compte celui-ci et que l’on exécute des actions en conséquence. La méthode qui traite l’événement est également appelée gestionnaire d’événement.La classe java.awt.Event est capable de mémoriser tous les paramètres relatifs à un événement.Les réactions aux événements utilisateur dans un programme java sont gérées par des programmes à l’écoute (Listener). Ces programmes doivent implémenter l’interface EventListener (auditeurs d’événements) ou des interfaces qui héritent de EventListener (par exemple ActionListener). On appellera « adaptateur » toute instance d’une classe implémentant une interface héritée de EventListener.

6. Evénements et actions

Prof: R. EL AYACHI34

Page 35: Chapitre4 cours de java

L’interface ActionListener déclare une seule méthode:public void actionPerformed(ActionEvent)

L’ajout d’un programme à l’écoute impose deux instructions:-La classe doit importer le packaje java.awt.event qui contient les classes d’écoute (import java.awt.event.*;)- La classe doit utiliser l’instruction implements pour déclarer qu’elle utilisera une ou plusieurs intrfaces d’écoute. (par exemple: public class Evenement extends java.applet.Applet implements Actionlistener)Les interfaces EventListener permettent à un composant d’interface graphique utilisateur de générer des événements utilisateur.Le tableau ci-dessous est une synthétique des événements et des « listeners »:

6. Evénements et actions

Prof: R. EL AYACHI35

Page 36: Chapitre4 cours de java

6. Evénements et actions

Prof: R. EL AYACHI36

Evénement Composant Listener Adapteur Méthodes

ActionEvent ButtonListMenuItemTextField

ActionListener ActionPerformed(ActionEvent)

ItemEvent CheckboxCheckboxMenuItemCoiceList

ItemListener ItemStateChanged(ItemEvent)

WindowEvent DialogFrame

WindowListenerWindowAdapter

WindowClosing(WindowEvent)WindowCOpenedWindowEvent)WindowConified(WindowEvent)WindowDeiconified(WindowEvent)WindowActived(WindowEvent)WindowDesactived(WindowEvent)

ComponentEvent DialogFrame

ComponentListener ComponentMoved(ComponentEvent)ComponentHidden(ComponentEvent)ComponentResized(ComponentEvent)ComponentShown(ComponentEvent)

AdjustementEvent Scrollbar AdjustementListener QdjustementValueChanged(AdjustementEvent)

Page 37: Chapitre4 cours de java

6. Evénements et actions

Prof: R. EL AYACHI37

MouseEvent CanvasDialogFramePanelWindow

MouseListenerMouseAdapter

MousePressed(MouseEvent)MouseReleased(MouseEvent)

KeyEvent Component KeyListenerKeyAdapter

KeyPressed(KeyEvent)KeyReleased(KeyEvent)KeyTyped(KeyEvent)

ContainerEvent Container ContainerListener ComponentAdded(ContainerEvent)ComponentRemoved(ContainerEvent)

TextEvent TextComponent TextListener TextValueChanged(TextEvent)

Page 38: Chapitre4 cours de java

Réaliser un éditeur:

Exercice

Prof: R. EL AYACHI38

Page 39: Chapitre4 cours de java

Chapitre 4

Prof: R. EL AYACHI39

Package java.swing

Page 40: Chapitre4 cours de java

Swing est apparu à partir de la version java1.2. Sa librairie est très puissante, ses composants sont très évolués (arbres, tables,…). Mais l’exécution est assez lente.Contrairement à AWT, les composants Swing ont un aspect indépendant du système sur lequel les applications sont utilisées. On y retrouve les composants classiques comme les boutons, les listes, les cases à cocher, …etc, mais aussi un grand nombre de nouveaux composants. L’apparence de ces composants est complètement différents de celles de AWT.Swing ajoute aux 4 gestionnaires de placement de l’AWT 4 autres gestionnaires de placement: deux sont intégrés à des composants (ScrollPaneLayout et ViewportLayout) et ne sont pas utilisables indépendamment de leur composant respectif, et deux s’utilisent comme ceux de l’AWT: BoxLayout et OverlayLayout, en liaison avec un conteneur.

1. Possibilités de java.awt

Prof: R. EL AYACHI40

Page 41: Chapitre4 cours de java

Swing est éclaté en plusieurs packages. En voici un échantillon:- javax.swing: Le plus haut niveau du package Swing. Il contient des Composants,

des Adaptateurs, des Modèles par défaut et des interfaces. - javax.swing.border: contient les classes et les interfaces pour dessiner des

bordures autour des composants- javax.swing.colorchooser: contient les classes et les interfaces utilisées par le

composant JColorChosser- javax.swing.event: contient les types d’événements et gestionnaires spécifiques

en plus de ceux de java.awt.evnt- javax.swing.table: contient les classes et les interfaces utilisées par JTable- javax.swing.text: contient les classes et les interfaces gérant les composants

textuels éditables ou non- javax.swing.text.html: fournit la classe HTMLEditorKit et des classe de support

pour la création d’éditeurs HTML - javax.swing.tree: contient les classes et les interfaces utilisées par JTree- javax.swing.undo: fournit des classes avec des capacités d’utiliser java comme

éditeur de textes

2. Package javax.swing

Prof: R. EL AYACHI41

Page 42: Chapitre4 cours de java

Swing ne remplace pas AWT. Il continue à utiliser les classes Color, Graphics, Toolkit, Font, FontMetrics et les classes de placement de L’AWT, par contre il n’utilise pas ses composants.Swing fournit des composants qui viennent en remplacement des composants AWT et on ajoute de nouveaux. Au total, Swing fournit plus de 40 composants. Tous les composants de Swing commencent par un J (ex: Jbutton, Jlabel, …).Les composants Swing sont définis dans le paquet javax.swing et ses sous-paquets javax.swing.text pour les composants gérant du texte et javax.swing.table pour ce qui concerne les tableaux.Tous les composants ci-dessous dérivant de la classe java.awt.Container ce sont aussi tous des conteneurs.- Etiquette: JLabel - Bouton: JButton, JRadioButton - Case à cocher: JCheckBox- Champ de texte: JTextField, JPasswordField- Zone de texte: JTextArea- Editeur de texte: JEditorPane, JTextPane

3. Principaux composants

Prof: R. EL AYACHI42

Page 43: Chapitre4 cours de java

- Liste: JList- Liste de choix: JComboBox- Arbre: JTree- Tableau: JTtable, JTableHeader- Curseur: JSlider- Barre de défilement: JScrollBar- Barre de progression: JProgressBar- Barre d’outils: JToolBar- Barre de menus: JMenuBar- Menu: Jmenu, JPopupMenu- Elément de menu: JMenuItem, JRadioButtonMenuItem, JCheckBoxMenuItem- Sélectionneur de fichiers: JFileChooser- Sélectionneur de couleurs: JColorChooser- Bulle d’aide: JToolTip- Séparateur: JSeparator

3. Principaux composants

Prof: R. EL AYACHI43

Page 44: Chapitre4 cours de java

Les conteneurs sont les objets dans les quels sont incorporés les composants. On peut citer:JFrame, JDialog, JScrollPane, JTabbedPane, JSplitPane…

4. Principaux conteneurs

Prof: R. EL AYACHI44

Page 45: Chapitre4 cours de java

4. Principaux conteneurs

Prof: R. EL AYACHI45

import javax.swing.*;Import java.awt.*; class TestJFrame extends Jframe{

TestJFrame(){ super(″Une application″); Container cp=getContentPane(); JLabel label =new JLabel(″Hello″,SwingConstants.CENTER); cp.add(label,BorderLayout.CENTER); }

public static void main(String[] arg) {

JFrame f = new TestJFrame(); f.setBounds(200,200,150,100); f.setVisible(true);

}}

Page 46: Chapitre4 cours de java

Pour décorer les composants, Swing dispose de la classe ImageIcon et des classes qui dérivent de la classe AbstractBorder.Un objet de type ImageIcon permet de charger une image au format GIF ou JPEG à partir d’un fichier ou d’une URL. L’icône obtenue peut ensuite être ajoutée à un JLabel , par exemple:ImageIcon test = new ImageIcon(″./image1.gif″);JLabel etq1 = new JLabel(test);Il existe 8 types de cadres prédéfinis:- BevelBorder: cadre 3D qui peut être en creux ou en bosse- CompoundBorder: cadre composite formé de plusieurs cadres élémentaires- EmptyBorder: cadre vide, sert à réserver de la place- EtchedBorder: cadre ayant la forme d’un sillon- LineBorder: cadre formé d’une simple ligne d’épaisseur donnée- MatteBorder: cadre formé d’un pavage d’icônes- SoftBevelBorder: cadre 3D avec coins arrondis- TitledBorder: cadre supportant un titre

5. Eléments décoratifs

Prof: R. EL AYACHI46

Page 47: Chapitre4 cours de java

Un cadre est crée à l’aide d’un objet de type BorderFactory spécialisé dans la fabrication des cadres:Border cadre = BorderFactory.createLineBorder(Color.black);et associé à un composant grâce à la méthodfe setBorder();JButton b = new Jbutton(″ON/OF″);b.setBorder(cadre);

5. Eléments décoratifs

Prof: R. EL AYACHI47

Page 48: Chapitre4 cours de java

Réaliser une simple calculatrice:

Exercice

Prof: R. EL AYACHI48


Top Related