Utilisation d'une fenêtre de dialogue pour poser une question et récupérer la réponse dans un choix libre.

     

alt : l'applet n'est pas visible par votre navigateur (dans le menu Outils, Modules complémentaires, activer le plugin Java(TM) Platform SE 6 U32 6.0.320.5 s'il est désactivé)
Appuyer sur le bouton de cette applet.

Avec la fenêtre de dialogue, les réponses possibles sont "oui", "non", "moyen", "pas d'opinion". Selon la réponse, l'action du programme est différente.

Tant que la fenêtre avec la question n'est pas fermée, l'application est bloquée : la fenêtre de dialogue est modale.

On utilise ici la méthode JOptionPane.showOptionDialog(...).

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;

public class Dialogue3 extends JFrame implements ActionListener {
JButton bouton = new JButton("Voir la question");
JLabel label = new JLabel(" ");

public Dialogue3() {
add(bouton, BorderLayout.NORTH);
add(label, BorderLayout.SOUTH);
bouton.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(100, 100);
pack();
setVisible(true);
}

public void actionPerformed(ActionEvent evt) {
String[] choix = {"oui", "non", "moyen", "pas d'opinion"};
int reponse = JOptionPane.showOptionDialog
(null,
"Etes-vous de bonne humeur ?",
"Boutons personnalises",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
choix,
choix[0]);
switch(reponse) {
case 0 : label.setText("Bravo !");
break;
case 1 : label.setText("Courage !");

break;
case 2 : label.setText("Perseverons !");
break;
case 3 : label.setText("Blase(e) ?");
break;
}
}
}

class EssaiDialogue3 {
public static void main(String[] arg) {
new Dialogue3();
}
}

Vous pouvez voir :

  • le code de l'application décrite ici.
  • le code de l'applet.
    int reponse = JOptionPane.showOptionDialog(null, "Etes-vous de bonne humeur ?", "Boutons personnalises", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, choix, choix[0]); : on obtient, avec cette méthode statique, une fenêtre de dialogue pour poser une question. Les valeurs de retour sont des entiers donnant le numéro d'ordre de la réponse, en commençant à 0.

    © Irène Charon, Télécom ParisTech 2011