• Aucun résultat trouvé

TD 7 IJA Les interfaces graphiques JAVA

N/A
N/A
Protected

Academic year: 2022

Partager "TD 7 IJA Les interfaces graphiques JAVA"

Copied!
13
0
0

Texte intégral

(1)

TD 7 IJA

Les interfaces graphiques

JAVA

(2)

AWT & SWING

• Première bibliothèque graphique JAVA: AWT

– Package java.awt

– Utilisation de code natif – Composants limités

• Nouvelle bibliothèque: SWING

– Package javax.swing

– Plus riche et plus personnalisable

– Ne remplace pas AWT mais fournit des composants plus

performants

(3)

Hiérarchie des composants

• Composants élémentaires

– JLabel – JButton – JCheckbox – JRadioButton – JTextField – JTextArea

• Composants complexes

– ButtonGroup – JComboBox – JList

– JScrollBar – JMenuBar – JPopupMenu

• Les containers

-JWindow JFrame JDialog

JFileDialog - JPanel

Applet - JTabbedPane - JScrollPane

Les composants graphiques sont placés dans des conteneurs (Containers):

http://java.sun.com/docs/books/tutorial/uiswing/components

/components.html

(4)

Disposition des composants (1/2)

Chaque conteneur utilise un gestionnaire de placement (Layout) pour la disposition des composants qu’il contient.

http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html

(5)

Disposition des composants (2/2)

Exemples de dispositions

GridLayout BorderLayout

JFrame fenetre=new JFrame("BorderLayoutDemo");

JPanel tmp = fenetre.getContentPane();

tmp.setLayout(new BorderLayout());

tmp.add(new Button("Button 1(PAGE_START)", BorderLayout.NORTH));

tmp.add(new Button("Button 3 (LINE_START)", BorderLayout.WEST);

tmp.add(new Button("Button 2 (CENTER)") BorderLayout.CENTER);

tmp.add(new Button("5 (LINE_END)") BorderLayout.EAST);

tmp.add(new Button("Long-Named Button 4 (PAGE_END)") BorderLayout.SOUTH);

JFrame fenetre=new JFrame("GridLayoutDemo");

JPanel tmp = fenetre.getContentPane();

tmp.setLayout(new GridLayout(3,2));

tmp.add(new Button("Button 1"), 0,0);

tmp.add(new Button("Button 2"), 0,1);

tmp.add(new Button("Button 3"), 1,0);

tmp.add(new Button("Long-Named Button 4 "), 1,1);

tmp.add(new Button("5"), 2,0);

(6)

Composition d’une fenêtre JAVA

(7)

Exemple d’une fenêtre JAVA

// Création de la fenêtre

JFrame frame = new JFrame("ExempleSimple");

// Création du container JPanel panel = new JPanel();

// Définition du gestionnaire de placement panel.setBorder(new GridLayout(1,2))

// Création des composants

JLabel label = new JLabel("Entrer votre nom");

JTextField textField = new JTextField("toto");

// Ajout des composants au container panel.add(label);

Panel.add(textField);

// Ajout du container à la fenêtre frame.getContentPane().add(panel); (*) // Afficher la fenêtre

frame.pack();

frame.setVisible(true);

(8)

Exercice (à programmer)

tfPanel chPanel lstPanel

cbPanel rbPanel btPanel MenuBar

Label

Checkbox

Button

TextField Choice

List

(9)

Propagation des évènements

JButton, JTextField… ActionEvent, MouseEvent…

ActionListener, ActionEvent…

L ’utilisateur réalise une action

Des événements sont alors générés

La Machine Virtuelle reçoit

tous les événements

Seuls les événements écoutés sont

transmis

Source de

l ’événement Événements Écouteurs

(10)

Un exemple

class BoutonAvecListener implements ActionListener{

static JButton boutonJaune = new JButton("Jaune");

public void actionPerformed(ActionEvent evt){

if (evt.getSource()==boutonJaune)

System.out.println("bouton Jaune Appuyé");

}

public static void main(String[] args) {

JFrame fenetre = new JFrame();

boutonJaune.addActionListener(new BoutonAvecListener());

fenetre.getContentPane().add(boutonJaune);

fenetre.pack();

fenetre.show();

} }

(11)

Le modèle MVC

• Une interface graphique =

– Un modèle qui gère les données de l’application – Une vue qui gère les composants graphiques

– Un contrôleur qui intercepte les événements de la

vue et effectue les actions nécessaires au niveau

du modèle

(12)

Conception d'une IHM en Java

• Modèle : classe de traitement

– Elle définit toutes les méthodes applicatives

• Vue : classe graphique de présentation

– Elle définit la facette externe de l'application pour l’utilisateur

• Contrôleur : classe listener

– Elle redirige les actions de l'utilisateur sur les classes de traitement (modèle)

• Remarque : le listener et la vue peuvent être contenus

dans la même classe

(13)

Exercice

I) L’exemple inévitable (HelloWorld)

1) développer une fenêtre HelloWord qui affiche

« Hello !! » dans un label

2) Ajouter un bouton à la fenêtre. Le label affichera

« Hello (n) » où n est le nombre de clicks sur le bouton II) Interface graphique pour la gestion des étudiants

En utilisant le modèle MVC, développer une interface

graphique pour ajouter, supprimer et afficher un étudiant

à la classe GesEtudHash du TD précédent.

Références

Documents relatifs

• Réaliser une classe Appli qui affiche une fenêtre (JFrame) contenant un JButton.}. Disposition des

fonctionnement des composants du système est appliqué. On peut ainsi simuler un tronçon de route, à chaque pas de temps virtuel, le simulateur calculant le déplacement élémentaire

– Saisir le code de la classe Circle, comme donné dans la diapo 5 (c’est-à-dire sans constructeur), compiler (et deboguer of course!). – Ecrire une classe TestCircle qui

– Soit on adapte le destinataire du message : Hello.coucou() ==> Indique que coucou est relatif à la classe et non pas à une de ses

– ajouter un attribut private qui compte le nombre d’éléments dans le tableau et passez l’attribut tableau public (c’est interdit mais c’est pour la bonne cause). –

– soit être situé dans une méthode propageant ( throws ) cette classe d'exception. • Un bloc finally peut-être posé à la suite des

filles, soit des attributs et méthodes types qui doivent être (re)définie dans dans les classes filles.. public class Cercle extends

pouvoir stocker les étudiants, la classe repose sur un Vector interne, listEtud. 2) Dans la classe ClientEtud, rechercher « steph », avec la méthode recherche(String nom) que