Utilisation d'une fenêtre de dialogue pour saisir différents renseignements récupérés par le programme.

     

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.

Vous pourrez saisir des renseignements qui viendront donner des valeurs à certaines variables situées au niveau de l'ouverture de la boîte de dialogue.

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.showInputDialog(...).

import java.awt.FlowLayout;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.Box;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Dialogue6 extends JDialog implements ActionListener {
Jeu jeu;
JButton valider = new JButton("Valider");
JButton annuler = new JButton("Annuler");
JTextField champNom = new JTextField(10);
JCheckBox choixAide = new JCheckBox("choix de l'aide");
public Dialogue6(Jeu jeu) {
this.jeu = jeu;
JPanel panneau ;

Box boite = Box.createVerticalBox();
setModal(true);
setTitle("Choix");
panneau = new JPanel();
panneau.add(new JLabel("nom du joueur : "));
panneau.add(champNom);
boite.add(panneau);

panneau = new JPanel();
panneau.add(choixAide);
boite.add(panneau);

panneau = new JPanel();
panneau.add(valider);
panneau.add(annuler);
boite.add(panneau);

add(boite) ;

valider.addActionListener(this);
annuler.addActionListener(this);
pack();
setLocation(400, 200);
setVisible(true);
}

public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
if (source == valider) {
jeu.nom = champNom.getText();
jeu.aide = choixAide.isSelected();
dispose();
}
else if (source == annuler) {
dispose();
}
}
}
class Jeu extends JFrame implements ActionListener {
String nom;
boolean aide;
JTextArea texte = new JTextArea(2, 20);
Jeu(String titre) {
super(titre);
JButton choix = new JButton("choix");

setLayout(new FlowLayout());
texte.setEditable(false);
add(choix);
add(texte);
choix.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(100, 200);
setVisible(true);
pack();
}

public void actionPerformed(ActionEvent evt) {
Dialogue6 dialogue = new Dialogue6(this);
if (nom != null) {
texte.setText("le nom est " + nom);
if (aide) texte.append("\n" + nom + " joue avec l'aide");
}
else texte.append("\n" + nom + " joue sans l'aide");
}
}

class EssaiDialogue6 {
public static void main(String[] arg) {
new Jeu("Jeu");
}
}

Vous pouvez voir :

  • le code de l'application décrite ici.
  • le code de l'applet.
    JDialog : la classe JDialog modélise une fenêtre qui peut être modale ou non. On rappelle que si une fenêtre est modale, tant qu'elle est ouverte, l'application est bloquée.
    setModal(true); : on demande à ce que la fenêtre de dialogue soit modale.
    Box boite = Box.createVerticalBox(); : on crée un JPanel muni d'un gestionnaire de répartition de type BoxLayout vertical, qui servira à ajouter les sous-composants les uns en-dessous des autres.
    dispose(); : cette instruction a pour conséquence la fermeture de la fenêtre de dialogue.
    texte.append("\n" + nom + " joue avec l'aide"); : on ajoute la chaîne de caractères indiquée à la fin de la chaîne se trouvant déjà dans texte.

    © Irène Charon, Télécom-ParisTech 2010