JOptionPane Да или Нет окна - PullRequest
       16

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

11 голосов
/ 06 декабря 2011

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

Вот мой код:

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);
    }
}

Прямо сейчас он печатает ПРИВЕТ независимо от того, нажимаете ли вы Да или Нет. Как мне заставить его показывать GOODBYE, когда пользователь выбирает Нет?

Ответы [ 8 ]

65 голосов
/ 06 декабря 2011

«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);
        }
8 голосов
/ 06 декабря 2011

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

Вы должны заменить ваше заявление if (true) на if ( n == JOptionPane.YES_OPTION)

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

YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION

С здесь

4 голосов
/ 06 декабря 2011

Вы можете исправить это с помощью:

if(n == JOptionPane.YES_OPTION)
{
    JOptionPane.showMessageDialog(null, "HELLO");
}
else
{
    JOptionPane.showMessageDialog(null, "GOODBYE");
}
3 голосов
/ 21 ноября 2015

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

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
}
3 голосов
/ 02 декабря 2013

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

      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);
2 голосов
/ 06 декабря 2011

Вы пишете if(true), поэтому всегда будет отображаться сообщение "Hello".

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

1 голос
/ 16 октября 2018

Для лучшего понимания, как это работает!

int n = JOptionPane.showConfirmDialog(null, "Yes No Cancel", "YesNoCancel", JOptionPane.YES_NO_CANCEL_OPTION);
    if(n == 0)
        {
        JOptionPane.showConfirmDialog(null, "You pressed YES\n"+"Pressed value is = "+n);
        }
    else if(n == 1)
        {
        JOptionPane.showConfirmDialog(null, "You pressed NO\n"+"Pressed value is = "+n);
        }
    else if (n == 2)
        {
        JOptionPane.showConfirmDialog(null, "You pressed CANCEL\n"+"Pressed value is = "+n);
        }
    else if (n == -1)
        {
        JOptionPane.showConfirmDialog(null, "You pressed X\n"+"Pressed value is = "+n);
        }

OR

int n = JOptionPane.showConfirmDialog(null, "Yes No Cancel", "YesNoCancel", JOptionPane.YES_NO_CANCEL_OPTION);
    switch (n) {
        case 0:
            JOptionPane.showConfirmDialog(null, "You pressed YES\n"+"Pressed value is = "+n);
            break;
        case 1:
            JOptionPane.showConfirmDialog(null, "You pressed NO\n"+"Pressed value is = "+n);
            break;
        case 2:
            JOptionPane.showConfirmDialog(null, "You pressed CANCEL\n"+"Pressed value is = "+n);
            break;
        case -1:
            JOptionPane.showConfirmDialog(null, "You pressed X\n"+"Pressed value is = "+n);
            break;
        default:
            break;
    }
0 голосов
/ 06 декабря 2011

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

   //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

...