0% ont trouvé ce document utile (0 vote)
38 vues46 pages

CoursPOOJava Interfacesgraphiques

Transféré par

Chiraz Ben Boubaker
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
38 vues46 pages

CoursPOOJava Interfacesgraphiques

Transféré par

Chiraz Ben Boubaker
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1 Les interfaces utilisateurs graphiques en Java

AWT (Abstract Windowing Toolkit) et Swing


2

 AWT est le paquetage de base pour construire et


manipuler des interfaces utilisateurs graphiques,
 parmi les paquetages originaux de Java.
 les programmeurs sont plutôt encouragés à utiliser Swing
 Swing est un nouveau paquetage qui repose sur AWT
mais certaines composantes ont été complètement
réécrites.
 En réalité dans AWT pour chaque composante (exemple
un bouton) était associée une fenêtre.
 Une simple application graphique se retrouvait avec une
multitude de fenêtres d'où la gourmandise en ressources
systèmes.
Les interfaces graphiques

 Une interface graphique est formée d’une ou


plusieurs fenêtres qui contiennent divers
composants graphiques (widgets) tels que
Boutons
listes déroulantes
Menus
champ texte
etc.

 Les interfaces graphiques sont souvent appelés


GUI d’après l’anglais Graphical User Interface
Programmation avec interfaces graphiques

 L’utilisateur peut interagir à tout moment avec


plusieurs objets graphiques : cliquer sur un
bouton, faire un choix dans une liste déroulante
ou dans un menu, remplir un champ texte, etc…

 Ces actions peuvent modifier totalement le


cheminement du programme, sans que l’ordre
d’exécution des instructions ne puisse être prévu
à l’écriture du code
Programmation événementielle

 L’utilisation d’interfaces graphiques impose une façon


particulière de programmer

 La programmation « conduite par les événements » est


du type suivant :
les actions de l’utilisateur engendrent des événements qui
sont mis dans une file d’attente
le programme récupère un à un ces événements et les traite

(A voir plus tard dans ce chapitre)


Les composants graphiques

 Les composants Swing sont décrits comme légers.

 Il existe des composants graphiques qui en contiennent


d'autres (et gèrent leur apparition, leur positionnement, ...)
=> Les conteneurs

 d'autres qui n'en contiennent pas comme les boutons


poussoirs, les fenêtres textes de saisie, ... Ces derniers sont
parfois appelés les contrôles.
=> Les composants atomiques
1) Les conteneurs
Les conteneurs: JFrame

 Une fenêtre de haut niveau, avec une bordure et un


titre.

 Un JFrame possède les contrôles de fenêtre standard,


tels un menu système, des boutons pour réduire ou
agrandir la fenêtre ou la redimensionner. Il peut aussi
contenir une barre de menus.

 Constructeur :
Constructeur sans argument : public JFrame () ;
Constructeur avec un argument (titre de la fenêtre) :
public JFrame (String name);
JFrame : Les méthodes

 setTitle (String title) : Cette méthode modifie le titre de la fenêtre.


Ce titre va apparaître dans la barre de titre et également dans la
barre des tâches ;
 setSize (int width, int height) : Cette méthode permet de modifier la
taille de la fenêtre ;
 setLocationRelativeTo (Component c) : Cette méthode permet de
positionner la fenêtre par rapport à un composant. En indiquant un
composant null, elle va se placer automatiquement au milieu de
l'écran
 setResizable (boolean resizable) : Cette méthode permet ou non le
redimensionnement de la fenêtre ;
 setDefaultCloseOperation (int operation) : Cette méthode permet de
configurer l'action qui va être exécutée lors de la fermeture de la
fenêtre. On peut choisir de faire quitter le programme, de fermer la
fenêtre ou de la rendre invisible ;
 show() ou bien setVisible (Boolean): Afficher la fenêtre.
JFrame : Les méthodes (Exemple)
import java.awt .*;
import javax.swing .*;
class Fenetre
{
public static void main(String [] args)
{
JFrame fenetre = new JFrame("Titre");
fenetre.pack();
fenetre.setVisible(true);
fenetre.setBounds(400,10,300,150);
//le coin supérieur gauche de la fenêtre
est place au pixel de coordonnées 400, 10
et ses dimensions seront de 300*150 pixels
}
}
JFrame : Les méthodes (Exemple)

 JFrame créé
JPanel:
 Un JPanel est un conteneur élémentaire destiné à contenir
d'autres composants. Il est muni d'un gestionnaire de placement
qui gère la stratégie de placement des différents composants
contenus dans le panneau.
 Les méthodes:
Jpanel() : Création d'un panneau ;
 void add (Component c) : Ajoute le composant c à la suite dans le
panneau ;
 void add (Component c, int i) : Ajoute le composant c en position i
dans la liste des composants du panneau. L'indice du premier
composant est 0 ;
 int getComponentCount () : Retourne le nombre de composants du
panneau ;
 void remove (Component c) : Retire le composant c ;
 void remove (int i) : Retire le composant de rang i ;
 void removeAll () : Retire tous les composants.
JPanel : Exemple
import java . awt .* ;
import javax . swing .* ;
class PanelFrame extends Jframe
{
private JPanel panneau ;
public PanelFrame ()
super (" Une fenetre avec un panneau jaune ");
setSize(300,100);
panneau = new JPanel();
panneau.setBackground(Color.yellow) ;
JLabel jl = new JLabel ("BONJOUR !");
panneau . add(jl);
getContentPane().add( panneau ) ;//mettre à
jour IHM
}
/*+ code dans main pour créer et afficher la
JFrame */
}
2) Les composants atomiques
Les composants atomiques : Les boutons

 Les boutons:
La classe JButton permet de définir des boutons sur lesquels on peut
cliquer.
 Méthodes:
Jbutton(String) : Construction avec définition du texte contenu dans
le bouton ;
Jbutton(ImageIcon) : Construction avec une icône dans le bouton ;
Jbutton(String, ImageIcon) : Construction avec définition du texte et
d’une icône dans le bouton ;
void addActionListener(ActionListener) : Pour associer l’objet qui
traitera les clics sur le bouton.
Les boutons: Exemple

JButton start = new JButton (''Démarrer''); //


Création d'un bouton
JPanel p = new JPanel(); //création du conteneur
p.add (start); // Ajout du bouton au conteneur p
Les composants atomiques : Les cases à cocher
 JCheckBox permet de définir des cases à cocher.
 Méthodes:
JCheckBox (String) : Construction avec définition du texte contenu dans
la case à cocher ;
JCheckBox (String,boolean) : Construction avec en plus définition de
l’état initial de la case à cocher ;
boolean isSelected () : Retourne l’état de la case à cocher (cochée ou
non). Par défaut, une case à cocher est construite dans l’état non coché
(false) ;
void setSelected (boolean) : Définit l’état de la case à cocher (cochée
ou non) ;
void addActionListener(ActionListener) : Associer l’objet qui traitera les
actions sur la case à cocher.
//addActionListener(this): Ce code crée l'objet de la classe et appelle sa
méthode addActionListener(). Cette méthode permet de préciser la classe
qui va gérer l'événement utilisateur de type ActionListener du bouton.
Cette classe doit impérativement implémenter l'interface de type
EventListener .
Les composants atomiques : Les boutons radio

 Le bouton radio de type JRadioButton permet à


l’utilisateur d’effectuer un choix de type oui/non.
 JRadioButton fait partie d’un groupe de boutons dans
lequel une seule option peut être sélectionnée à la fois.
Un objet de type ButtonGroup sert uniquement à assurer
la désactivation automatique d’un bouton lorsqu’un
bouton du groupe est activé.
 Un bouton radio qui n’est pas associé à un groupe,
exception faite de son aspect, se comporte exactement
comme une case à cocher.
Boutons radio: Exemple
import java . awt .*;
import javax . swing .*;
public class BoutonRadioFrame extends JFrame
{
private JRadioButton bRouge ;
private JRadioButton bVert ;
public BoutonRadioFrame ()
{
super (" Une fenetre avec des boutons radio ") ;
setBounds (10 ,40 ,300 ,200) ;
bRouge = new JRadioButton (" Rouge ") ;
bVert = new JRadioButton (" Vert ") ;
ButtonGroup groupe = new ButtonGroup () ;
groupe.add(bRouge); groupe.add(bVert ) ;
Container contenu = getContentPane () ;
contenu.setLayout(new FlowLayout()) ;
contenu.add(bRouge) ;
contenu.add(bVert) ;
}
// Le getContentPane() méthode récupère le contenu du volet couche de sorte que vous
pouvez ajouter un objet. Le volet de contenu est un objet créé par l'environnement
d'exécution Java.
// Les Layout managers sont des classes qui ont pour rôle de disposer les
composants de manière relative, sans utiliser de coordonnées.
Boutons radio: Exemple
public static void main ( String args [])
{
BoutonRadioFrame fen = new BoutonRadioFrame ();
fen. setVisible ( true );
fen. setBounds (10 , 200 , 300 , 150);
} }
Les composants atomiques : Les combobox

 Un JComboBox est un composant permettant de faire un


seul choix parmi plusieurs propositions.
 Méthodes :
JComboBox (Object[ ]) : Construction avec définition de
la liste. On peut utiliser un tableau de chaînes de
caractères (String) ou de toute autre classe d’objets :
void addItem (Object) : Ajoute une valeur possible de
choix :
int getSelectedIndex () : Retourne le numéro du choix
actuel :
void addActionListener(ActionListener) : Pour associer
l’objet qui traitera les choix faits
Les composants atomiques: Les zones de texte

 Un JTextArea permet de définir des zones de texte sur


plusieurs lignes modifiables.
 Méthodes :
JTextArea (String) : Crée une zone de texte avec un
contenu initial ;
JTextArea (String,int,int) : Crée une zone de texte avec
un contenu initial et précise le nombre de lignes et de
colonnes de la zone de texte ;
void append (String) : Ajoute la chaîne à la fin du texte
affiché
Les composants atomiques: Les labels

 Un JLabel permet d’afficher du texte fixe ou une image. Il


peut contenir plusieurs lignes et il comprend les tag HTML. Le
JPasswordField permet de cacher ce qui est écrit.
 Méthodes :
JLabel (String): Construit le titre avec son contenu ;
JLabel (Icon): Construit le titre avec une image comme contenu ;
void setText (String): Définit le texte ;
String getText (): Retourne le texte
void setIcon (ImageIcon): Définit l’image ;
Icon getIcon (): Retourne l’image sous forme d’un objet de classe
Icon.
Les labels: Exemple

import java.awt .*;


import javax.swing .*;
public class LabelFrame extends JFrame
{
public LabelFrame ()
{
super (" Une fenetre avec un Label ") ;
this.setBounds (100 , 200 , 300 , 100);
Container pane = this.getContentPane ();
pane.setLayout(new FlowLayout());
JLabel jl = new JLabel (" BONJOUR !");
jl.setFont(new Font("Arial",Font.BOLD|Font.ITALIC,
16));
jl.setForeground(Color.red);
pane.add(jl);
}
public static void main(String[] arg )
{
LabelFrame frame = new LabelFrame();
frame.setVisible(true);
} }
Les menus

 Si on a une barre de menu JMenuBar, on ajoute des


JMenu dans la barre. Définir des menus → utiliser 3
classes JMenuBar, Jmenu, JmenuItem
JmenuBar : Barre des menus placée en haut de la fenêtre
d’une application. La méthode addSeparator() peut être
utilisée pour insérer un espace entre les composants de la
barre d’outils ;
Une barre de menu est composée de Jmenus. Un objet
JMenu possède un label, et quand on clique dessus, il peut
montrer un menu déroulant ;
Un item d’un objet JMenu peuvent être un objet de type
JmenuItem, JCheckBoxMenuItem ou JradioButtonMenuItem ;
Un objet JMenuItem est un simple élément de menu avec un
label. Il peut avoir une icône en plus de son label.
Les menus: Exemple

import java . awt .*;


import javax . swing .*;
public class FrameMenu extends JFrame
{
Container pane = this . getContentPane ();
public FrameMenu ()
{
setTitle (" FrameMenu ");
JMenuBar jmb = new JMenuBar ();
this . setJMenuBar ( jmb );
JMenu menuDefinir = new JMenu (" Definir ");
jmb. add( menuDefinir );
Les menus: Exemple

menuDefinir . add( new JMenuItem ("le nom " ));


menuDefinir . add( new JMenuItem ("le prenom " ));
JMenu menuAfficher = new JMenu (" Afficher ");
jmb. add( menuAfficher );
}
/* + methode main */
}
Les boites de message

 Une boîte de message fournit à l'utilisateur un message


qui reste affiché tant que l'utilisateur n'agit pas sur le
bouton OK. Elle est construite à l'aide de la méthode de
classe showMessageDialog de la classe JOptionPane.
Les boites de dialogue
import javax.swing.* ;
class MaFenetre extends JFrame
{
MaFenetre ()
{
setTitle ("Essai message") ;
setSize (400, 150) ;
}}
public class Mess1
{
public static void main (String args[])
{
MaFenetre fen = new MaFenetre() ;
fen.setVisible(true) ;
JOptionPane.showMessageDialog(fen, "Bonjour");
//le premier argument de la méthode showMessageDialog correspond à la fenêtre
parent
//de la boîte de message, c'est-à-dire la fenêtre dans laquelle la boîte de message
va //s'afficher. Cet argument eut prendre la valeur null.
}}
Les boites de dialogue
Les boites de dialogue

 Dans l'exemple précédent, nous n'avons défini que le contenu du


message.
 Il existe une variante de la méthode howMessageDialog qui permet
aussi de choisir le titre de la boîte et le type d'icône parmi la liste
suivante (les paramètres sont des constantes entières de la classe
JoptionPane).
Les boites de confirmation
 Une boîte de confirmation offre à l'utilisateur un choix de
type oui/non.
 Elle est construite à l'aide de la méthode de classe
showConfirmDialog de la classe JOptionPane.

import javax.swing.* ;
public class Input1
{
public static void main (String args[])
{
JOptionPane.showConfirmDialog(null, "Voulez-
vous continuer ?") ;
} }
Les boites de saisie

 Une boîte de saisie permet à l'utilisateur de fournir une


information sous la forme d'une chaîne de caractères. Elle est
construite à l'aide de la méthode de classe showInputDialog
de la classe JOptionPane.
 Exemple:

import javax.swing.* ;
public class Input1
{
public static void main (String args[])
{
JOptionPane.showInputDialog (null, "donnez un
texte");
} }
3) Les gestionnaires de mise en page
Les gestionnaires de mise en page

 Pour placer des composants dans un container, Java


propose une technique de Layout.
 Un layout est une entité Java qui place les composants
les uns par rapport aux autres.
 Le layout s’occupe aussi de réorganiser les composants
lorsque la taille du container varie.
 Il y a plusieurs layout: BorderLayout, BoxLayout,
CardLayout, FlowLayout, GridLayout, GridBagLayout.
 Un layout n’est pas contenu dans un container, il gère le
positionnement.
BorderLayout

 Le BorderLayout sépare un container en cinq zones :


Nord, Sud, Est, Ouest et Centre.
 Lorsque l’on agrandit le container, le centre s’agrandit.
Les autres zones prennent uniquement l’espace qui leur
est nécessaire.
 Les composants y sont ajoutés par la méthode
add(Component, int) dont le second paramètre indique
dans quelle zone doit être placé le composant.
Ce paramètre peut prendre les valeurs :
BorderLayout.NORTH, BorderLayout.SOUTH,
BorderLayout.EAST, BorderLayout.WEST ou
BorderLayout.CENTER.
BorderLayout: Exemple
 import java . awt .* ;
import javax . swing .* ;
class FrameDemo5 extends JFrame
{
public FrameDemo5 ()
{
super (" Une fenetre ") ;
setSize (400 , 200) ;
Container contenu = this . getContentPane () ;
contenu . setLayout ( new BorderLayout ()) ;
contenu . add ( new JButton (" Bouton UN")) ;
// bouton placé au centre par défaut
contenu . add ( new JButton (" Bouton DEUX "), BorderLayout . NORTH ) ;
contenu . add ( new JButton (" Bouton TROIS "), BorderLayout . SOUTH ) ;
contenu . add ( new JButton (" Bouton QUATRE "),BorderLayout . WEST ) ;
contenu . add ( new JButton (" Bouton CINQ "), BorderLayout . EAST ) ;
}
public static void main ( String args [ ])
{
JFrame fen = new FrameDemo5 () ;
fen. setVisible ( true ) ;
}}
FlowLayout

 Un FlowLayout permet de ranger les composants dans


une ligne.
 Si l’espace est trop petit, une autre ligne est créée.
 Le FlowLayout est le layout par défaut des JPanel, son
constructeur accepte trois paramètres selon le modèle
suivant : FlowLayout (int,int,int) :
Le premier paramètre indique comment seront alignés les
composants, il peut prendre les valeurs suivantes :
FlowLayout.CENTER, FlowLayout.LEFT ou FlowLayout.RIGHT ;
Le deuxième paramètre donne l’espacement horizontal
entre composants (en pixels);
Le dernier paramètre donne l’espacement vertical entre
composants (en pixels).
FlowLayout: Exemple

Container contenu=this.getContentPane();
contenu.setLayout(new FlowLayout());
contenu.add (new JButton("Button 1"));
contenu.add(new JButton("2"));
contenu.add(new JButton ("Button 3"));
contenu.add(new JButton("Long-Named Button 4"));
contenu.add(new JButton(" Button 5"));
GridLayout
 Un GridLayout permet de positionner les composants sur une
grille. Son constructeur GridLayout (int,int,int,int) accepte
quatre paramètres :
Le premier paramètre est le nombre de lignes du tableau
Le deuxième paramètre est le nombre de colonnes du tableau ;
Le troisième paramètre donne l’espacement horizontal entre
composants (en pixel) ;
Le dernier paramètre donne l’espacement vertical entre
composants (en pixels).
 Toutes les cases du tableau ont la même taille (celle
déterminée par le composant le plus grand).
 Les composants seront ajoutés par la suite à l’aide de la
méthode add (Component) qui remplira le tableau ligne par
ligne.
GridLayout: Exemple
Container contenu = this.getContentPane();
contenu.setLayout(new GridLayout(0,2));
contenu.add(new JButton ("Button 1"));
contenu.add(new JButton ("2"));
contenu.add(new JButton ("Button 3" ));
contenu.add(new JButton ("Long - Named Button 4"));
contenu.add(new JButton("Button 5"));

Vous aimerez peut-être aussi