JOptionPane 是或否窗口

Posted

技术标签:

【中文标题】JOptionPane 是或否窗口【英文标题】:JOptionPane Yes or No window 【发布时间】:2012-01-13 21:00:45 【问题描述】:

我正在尝试使用“是”或“否”按钮创建消息。然后会出现一个窗口,其中包含特定消息,具体取决于用户单击是还是否。

这是我的代码:

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。当用户选择否时,我如何让它显示 GOODBYE?

【问题讨论】:

你有死代码。你的 else 部分永远不会执行。 10 次赞成和 7 次最喜欢的问题...我想知道为什么 【参考方案1】:

"if(true)" 将永远为真,并且永远不会出现在 else 中。如果你想让它正常工作,你必须这样做:

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

【讨论】:

@JoshKing 如果它对你有用,那么你应该投票并接受这个答案。【参考方案2】:

您总是在检查一个真实的条件,因此您的消息将始终显示。

您应该将 if (true) 语句替换为 if ( n == JOptionPane.YES_OPTION)

当 showXxxDialog 方法之一返回一个整数时,可能的 值是:

YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION

来自here

【讨论】:

+1 用于链接到 JavaDocs,但我将链接从 1.4.2 更新到 1.7,并在字段摘要中添加了一个锚点。【参考方案3】:

你可以用这个来修复它:

if(n == JOptionPane.YES_OPTION)

    JOptionPane.showMessageDialog(null, "HELLO");

else

    JOptionPane.showMessageDialog(null, "GOODBYE");

【讨论】:

【参考方案4】:

是和否消息的代码

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

【讨论】:

【参考方案5】:

你可以更简单地做到这一点:

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

【讨论】:

你错过了 switch 中的 break 语句。【参考方案6】:

你正在写if(true),所以它总是会显示“Hello”消息。

您应该根据返回的n 的值做出决定。

【讨论】:

是的,但是我该如何编码呢?我可以将输出分配给一个变量,但我不知道该怎么做 @JoshKing 我不记得确切的值。尝试在控制台上打印 n 的值,并检查按下是时给出的值以及按下否时给出的值。然后使用 if(n == ?) else ".. 然后使用 if(n == ?)" 不要使用“魔法值”。定义的常量将在明年 JRE 下工作..【参考方案7】:

为了更好地了解它的工作原理!

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

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;
    

【讨论】:

【参考方案8】:

类似的东西......

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

【讨论】:

你写了case JOptionPane.NO_OPTION: 2次。

以上是关于JOptionPane 是或否窗口的主要内容,如果未能解决你的问题,请参考以下文章

尾部斜线:是或否? [复制]

sh 问是或否

C++ 抽象类:构造函数是或否?

如何将计数器设置为是或否无线电,提交时递增?

MVC 模型布尔显示是或否

是或否:MVC 中的模型是不是应该包含应用程序逻辑?