JOptionPane YES NO OPTION

4

我有一个JOptionPane和“是”和“否”按钮。但是,无论您点击哪个按钮,它仍然存在。请帮忙!以下是代码:

int dialogButton = JOptionPane.YES_NO_OPTION;
            JOptionPane.showConfirmDialog (null, "Are you sure?","WARNING", dialogButton);
            if(dialogButton == JOptionPane.YES_OPTION) {
                System.exit(0);
            if(dialogButton == JOptionPane.NO_OPTION) {
                  remove(dialogButton);
                }
              }

为了更快地获得帮助,请发布一个SSCCE,它是一个简短的、可运行的、可编译的示例。否则,对于您非常模糊的问题,答案可能无法给出......请确保在阅读Oracle教程如何创建对话框之前。 - mKorbel
6个回答

22
你实际上应该从选项面板中获取结果:
dialogButton = JOptionPane.showConfirmDialog (null, "Are you sure?","WARNING", dialogButton);
否则,它将保持设置为JOptionPane.YES_NO_OPTION
更清晰的表述是:
if (JOptionPane.showConfirmDialog(null, "Are you sure?", "WARNING",
        JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
    // yes option
} else {
    // no option
}

尽管如此,我不确定在发布的代码中这行代码 remove(dialogButton); 预期要做什么。

更多详情和示例请参阅如何创建对话框教程。


3
int dialogButton = JOptionPane.showConfirmDialog (null, "Are you sure?","WARNING",JOptionPane.YES_NO_OPTION);

if(dialogButton == JOptionPane.YES_OPTION) {
System.exit(0);}else {remove(dialogButton);}

这是正确的!


但是移除(dialogButton); 是错误的。 - gus
1
欢迎来到StackOverflow!您可以[编辑]您的帖子并删除您的评论。请继续在您的答案中添加您的评论。顺便说一下,您应该描述为什么您认为这是一个好的解决方案以及为什么remove()是错误的。 - Artjom B.

1

将代码更改为

int dialogButton = JOptionPane.showConfirmDialog (null, "确定吗?","警告", dialogButton);


0
if(dialogButton == JOptionPane.YES_OPTION) { // <<< start
    System.exit(0);
        if(dialogButton == JOptionPane.NO_OPTION) {
            remove(dialogButton);
        }
}// <<< stop

这个结果是由于外部的if语句包含了另一个if语句造成的,请确保不要嵌套if语句,应该按照以下方式编写:

if(dialogButton == JOptionPane.YES_OPTION) {
    System.exit(0);
}else {
    remove(dialogButton);
}

另一件事是这行代码 int dialogButton = JOptionPane.YES_NO_OPTION;,请将其更改为

int dialogButton = JOptionPane.showConfirmDialog (null, "Are you sure?","WARNING", dialogButton);

那不是问题。而且,else和else if对我来说不起作用。 - Naame Nameee

0
如果你想让 JOptionPane 被移除,那么你可以:
optionPane.setVisible(false);

如果你不想这样做,可以看看其他的答案。


-1
if (JOptionPane.showConfirmDialog(this, "sfd", "sd", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
    jProgressBar1.setValue(jProgressBar1.getValue() + 10);
    jProgressBar1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
else {
    System.exit(0);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接