Swing Partie 2
Swing Partie 2
Swing Partie 2
Fenêtres de dialogues
3
Message de dialogue
public static void main(String[] args) {
String[] sf = {"célibataire", "marié(e)", "divorcé(e)", "Veuf(ve)"};
JOptionPane jop1 = new JOptionPane();
JOptionPane jop2 = new JOptionPane();
4
Option de dialogue
public static void main(String[] args) {
String[] sf = {"célibataire", "marié(e)", "divorcé(e)", "Veuf(ve)"};
JOptionPane jop1 = new JOptionPane();
JOptionPane jop2 = new JOptionPane();
int choix = jop1.showOptionDialog(null,
"Veuillez indiquer votre situation familiale : ",
"GSEII Identité",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
sf,
sf[0]);
jop2.showMessageDialog(null, "Votre situation familiale est : " +
sf[choix], "GSEII : Situation of Student",
JOptionPane.INFORMATION_MESSAGE);
5
Boites de dialogue
personnalisées
import javax.swing.JDialog;
import javax.swing.JFrame;
6
Boites de dialogue
personnalisées
public static void main(String[] args) {
GDialog gd = new GDialog(null, "Titre Dynamique", true);
7
JAVA
9
Le modèle événementiel
10
Gestion des événements
Que se passe t il ?
quand on appuie sur un bouton,
quand on ferme une fenêtre,
quand on bouge la souris …
Un événement contenant le lieu, la nature et l’objet
« actionné » (ActionEvent) est créé par le système graphique.
Cet événement est différent selon qu’il s’agit d’un clic sur un
bouton, le déplacement de la souris, etc…
Le « dispatcher » envoie cet événement aux objets qui se sont
déclarés intéressés par cet événement
La classe receveur
public class MonListener implements java.awt.event.ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(“evenement recu !”);
}
}
…
Quelque part dans le programme, le lien entre le receveur et le
lanceur
java.swing.JButton button = new java.swing.JButton(“click”);
…
button.addActionListener(new MonListener());
16
Ecouter un bouton et réagir
import javax.swing.*; import java.awt.*; import java.awt.event.*;
class Ecouteur1 extends JFrame {
private JButton button;
public Ecouteur1 () { super("exemple ecouteur 1");
button = new JButton("Appuyer pour afficher un texte");
Monecouteur objetecoutant = new Monecouteur();
button.addActionListener(objetecoutant);
add(button, BorderLayout.CENTER);
pack(); setVisible(true);
} /* Classe interne à la classe ecouteur1 souvent utilisée pour les listener
On peut aussi définir une classe externe. */
class Monecouteur implements ActionListener {
public void actionPerformed(ActionEvent event) {
System.out.println("Action sur le bouton"); }
}}
public class Test8{
public static void main(String[] args) { new Ecouteur1();}
}
23
Les actions sur une fenêtre
Il faut créer l’interface graphique : c’est le même code
Il faut créer une classe (ici Monecouteurfenetre) qui implémente l’interface
WindowListener qui permet de gérer les fenêtres
Il faut définir 7 méthodes, même si elles sont vides
void windowOpened(WindowEvent e) : ouverture de la fenêtre
void windowClosed(WindowEvent e) : après la fermeture de la fenêtre
void windowClosing(WindowEvent e) : au moment de la fermeture de la
fenetre
void windowIconified(WindowEvent e) : iconifier la fenêtre
void windowDeiconified(WindowEvent e) : deiconifier de la fenetre
void windowActivated(WindowEvent e) : focus dans la fenêtre; Utiliser de
préférence windowGainedFocus de WindowFocusListener
void windowDeactivated(WindowEvent e) : perte du focus de la fenetre.
Utiliser de préférence windowLostFocus de WindowFocusListener
On crée un objet anonyme, sans nom car c’est inutile
On enregistre cet objet auprès de la fenêtre par la méthode addWindowListener
26
Les actions sur une fenêtre
(1/3)
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
public class ecouteur2 extends WindowAdapter{
private JButton bouton, JFrame frame;
public ecouteur2() {
frame = new JFrame("Exemple d'écouteur");
bouton = new JButton("Appuyez pour afficher un texte");
MonEouteur objetecoutant = new MonEouteur();
bouton.addActionListener(objetecoutant);
frame.add(bouton, BorderLayout.CENTER);
MonEcouteurFenetre listener = new MonEcouteurFenetre();
frame.addWindowListener(listener);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] argv){new ecouteur2(); }}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Action sur le bouton");
Méthodes utiles
String getActionCommand() : retourne la chaîne associée à
l'évènement
int getModifiers() : entier contenant les touches enfoncées par
l'utilisateur (SHIFT, CTR)
Object getSource() : composant émettant l'événement
int getID() : retourne le type de l’événement
long getWhen() : retourne le temps écoulé depuis l’apparition de
l’évènement
public Ex51() {
// Fenetre principale qui envoie
JFrame frame = new JFrame("Chat");
// Gestion de la sortie de fenetre
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Création du panel de la fenetre principale
JPanel panelprincipal = new JPanel(new BorderLayout());
texte = new JTextArea();
// Partie texte de la Fenetre d’emission
JScrollPane paneltexte = new JScrollPane (texte);
// Bouton de la Fenetre d’emission
JButton button = new JButton("Envoyer");
panelprincipal.add(paneltexte, BorderLayout.CENTER);
panelprincipal.add(button, BorderLayout.SOUTH);
// Gestion de l'appui sur le bouton "Envoyer"
button.addActionListener(new MyActionListener());
frame.getContentPane().add(panelprincipal);