71 votes

JOptionPane Problème de boîte de dialogue de confirmation des options OUI/NON

J'ai créé un JOptionPane et il n'a que deux boutons YES_NO_OPTION .

Après JOptionPane.showConfirmDialog apparaît, je veux cliquer YES BUTTON pour continuer à ouvrir le JFileChooser et si je clique sur NO BUTTON il doit annuler l'opération.

Cela semble assez facile, mais je ne sais pas où se situe mon erreur.

Extrait de code :

if (textArea.getLineCount() >= 1) {  //The condition to show the dialog if there is text inside the textArea

    int dialogButton = JOptionPane.YES_NO_OPTION;
    JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous Note First?","Warning",dialogButton);

    if (dialogButton == JOptionPane.YES_OPTION) { //The ISSUE is here

    JFileChooser saveFile = new JFileChooser();
    int saveOption = saveFile.showSaveDialog(frame);
    if(saveOption == JFileChooser.APPROVE_OPTION) {

    try {
        BufferedWriter fileWriter = new BufferedWriter(new FileWriter(saveFile.getSelectedFile().getPath()));
        fileWriter.write(textArea.getText());
        fileWriter.close();
    } catch(Exception ex) {

    }
}

120voto

ziesemer Points 15594

Vous devez examiner la valeur de retour de l'appel à showConfirmDialog . I.E. :

int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous Note First?","Warning",dialogButton);
if(dialogResult == JOptionPane.YES_OPTION){
  // Saving code here
}

Vous avez testé contre dialogButton que vous utilisiez pour définir les boutons qui devaient être affichés par la boîte de dialogue, et cette variable n'a jamais été mise à jour - donc dialogButton n'aurait jamais été autre chose que JOptionPane.YES_NO_OPTION .

Selon le Javadoc de showConfirmDialog :

Retourne : un entier indiquant l'option sélectionnée par l'utilisateur

0 votes

Wow, ça a marché ! Je viens de commencer à utiliser showConfirmDialog et je n'ai pas très bien compris, bien que j'aie lu la Javadoc. Mais maintenant, avec mon erreur et votre explication, j'ai dissipé beaucoup de confusion. Je vais continuer à jouer avec ça et voir ce que je peux trouver. MERCI !!!

3 votes

@iMohammad, pourquoi ne pas lire le tutoriel Swing ? Le tutoriel contient des exemples pratiques, pour toutes les questions que vous avez posées ces derniers jours.

44voto

ALV Points 559

Essayez ceci,

int dialogButton = JOptionPane.YES_NO_OPTION;
int dialogResult = JOptionPane.showConfirmDialog(this, "Your Message", "Title on Box", dialogButton);
if(dialogResult == 0) {
  System.out.println("Yes option");
} else {
  System.out.println("No Option");
}

1 votes

Que puis-je mettre à la place de this ? Je fais cela dans un contexte statique.

1 votes

Vous pouvez mettre null ce qui aurait pour effet de centrer la boîte de dialogue au milieu de l'écran au lieu du cadre parent.

7voto

axlfire1 Points 141
int opcion = JOptionPane.showConfirmDialog(null, "Realmente deseas salir?", "Aviso", JOptionPane.YES_NO_OPTION);

if (opcion == 0) { //The ISSUE is here
   System.out.print("si");
} else {
   System.out.print("no");
}

1 votes

En quoi cela diffère-t-il de la réponse acceptée qui a été postée il y a longtemps et qui est encore meilleure depuis que l'on utilise l'outil JOptionPane.YES_OPTION au lieu de 0 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X