JOptionPane ДА / Нет параметров Подтвердить выпуск диалогового окна - PullRequest
57 голосов
/ 31 декабря 2011

Я создал JOptionPane, и он имеет только две кнопки YES_NO_OPTION.

После того, как появится JOptionPane.showConfirmDialog, я хочу нажать YES BUTTON, чтобы продолжить открытие JFileChooser, и если я нажму NO BUTTON, операция будет отменена.

Это кажется довольно простым, но я не уверен, где моя ошибка.

Фрагмент кода:

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

    }
}

Ответы [ 3 ]

104 голосов
/ 31 декабря 2011

Вам нужно посмотреть на возвращаемое значение звонка на 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
}

Вы тестировали против dialogButton, который вы использовали для установки кнопок, которые должны отображаться в диалоговом окне, и эта переменная никогда не обновлялась - поэтому dialogButton никогда не был бы ничем иным, как JOptionPane.YES_NO_OPTION.

Согласно Javadoc для showConfirmDialog:

Возвращает: целое число, указывающее выбранную пользователем опцию

32 голосов
/ 09 февраля 2013

Попробуйте,

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");
} 
6 голосов
/ 07 апреля 2014
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");
}
...