Окно JOptionPane Да или Нет

Я пытаюсь создать сообщение с помощью кнопки "Да" или "Нет". Затем появится окно с определенным сообщением, которое зависит от того, нажал ли пользователь "Да" или "Нет"

Вот мой код:

public class test{
    public static void main(String[] args){

        //default icon, custom title
        int n = JOptionPane.showConfirmDialog(
            null,
            "Would you like green eggs and ham?",
            "An Inane Question",
            JOptionPane.YES_NO_OPTION);

        if(true){
            JOptionPane.showMessageDialog(null, "HELLO");
        }
        else {
            JOptionPane.showMessageDialog(null, "GOODBYE");
        }

        System.exit(0);
    }
}

Сейчас он печатает HELLO независимо от того, нажимаете ли вы Yes или No. Как мне заставить его показывать GOODBYE, когда пользователь выбирает No?

Ответ 1

"if (true)" всегда будет истинным, и он никогда не станет другим. Если вы хотите, чтобы он работал правильно, вы должны сделать это:

    int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
        if (reply == JOptionPane.YES_OPTION) {
          JOptionPane.showMessageDialog(null, "HELLO");
        }
        else {
           JOptionPane.showMessageDialog(null, "GOODBYE");
           System.exit(0);
        }

Ответ 2

Вы всегда проверяете истинное состояние, поэтому ваше сообщение всегда будет показывать.

Вы должны заменить инструкцию if (true) на if ( n == JOptionPane.YES_OPTION)

Когда один из методов showXxxDialog возвращает целое число, возможно значения:

YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION

От здесь

Ответ 3

Вы можете исправить это следующим образом:

if(n == JOptionPane.YES_OPTION)
{
    JOptionPane.showMessageDialog(null, "HELLO");
}
else
{
    JOptionPane.showMessageDialog(null, "GOODBYE");
}

Ответ 4

Вы можете сделать это проще:

int test = JOptionPane.showConfirmDialog(null, "Would you like green eggs and ham?", "An insane question!");
switch(test) {
    case 0: JOptionPane.showMessageDialog(null, "HELLO!"); //Yes option
    case 1: JOptionPane.showMessageDialog(null, "GOODBYE!"); //No option
    case 2: JOptionPane.showMessageDialog(null, "GOODBYE!"); //Cancel option
}

Ответ 5

Вы пишете if(true), чтобы он всегда показывал сообщение "Hello".

Вы должны принять решение на основе возвращаемого значения n.

Ответ 6

Код для сообщений "Да" и "Нет"

      int n = JOptionPane.showConfirmDialog(  
                null,
                "sample question?!" ,
                "",
                JOptionPane.YES_NO_OPTION);

      if(n == JOptionPane.YES_OPTION)
      {
          JOptionPane.showMessageDialog(null, "Opening...");
      }
      else
      {
          JOptionPane.showMessageDialog(null, "Goodbye");
          System.exit(0);

Ответ 7

Что-то в этом роде....

   //default icon, custom title
int n = JOptionPane.showConfirmDialog(null,"Would you like green eggs and ham?","An Inane Question",JOptionPane.YES_NO_OPTION);

String result = "?";
switch (n) {
case JOptionPane.YES_OPTION:
  result = "YES";
  break;
case JOptionPane.NO_OPTION:
  result = "NO";
  break;
default:
  ;
}
System.out.println("Replace? " + result);

вы также можете посмотреть DialogDemo