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 是或否窗口的主要内容,如果未能解决你的问题,请参考以下文章