Post on 14-Apr-2017
Langage JAVAPof: R. EL AYACHI
Département d’informatiqueFaculté des Sciences et Techniques
Béni Mellal
1
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
* 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
Chapitre 4
Prof: R. EL AYACHI4
Package java.awt
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
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
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
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
Tracer les formes géométriques suivantes:
Exercice1
Prof: R. EL AYACHI9
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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)
Réaliser un éditeur:
Exercice
Prof: R. EL AYACHI38
Chapitre 4
Prof: R. EL AYACHI39
Package java.swing
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
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
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
- 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
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
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);
}}
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
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
Réaliser une simple calculatrice:
Exercice
Prof: R. EL AYACHI48