web-dev-qa-db-fra.com

JOptionPane OUI / Non Options Problème de boîte de dialogue Confirmer

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 j’avais cliqué sur NO BUTTON il devrait annuler l'opération.

Cela semble assez facile mais je ne suis pas sûr de savoir où est ma faute.

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) {

    }
}
58
Sobiaholic

Vous devez regarder la valeur de retour de l'appel à showConfirmDialog. C'EST À DIRE.:

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 testiez par rapport à dialogButton, que vous utilisiez pour définir les boutons à afficher dans la boîte de dialogue. Cette variable n'a jamais été mise à jour. Ainsi, dialogButton n'aurait jamais été autre chose que JOptionPane.YES_NO_OPTION.

Selon la Javadoc pour showConfirmDialog:

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

106
ziesemer

Essaye ça,

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");
} 
32
ALV
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");
}
6
user3505080