我的代码的目标是获取用户输入,当用户想要保存数据时,他们按OK选项。但是,如果用户输入了一些数据,并且不再想继续,那么他们只需按下右上角的红色十字退出按钮即可退出而不保存?
我该怎么做?
这是我的代码:
JOptionPane.showMessageDialog(null, myPanel, "Edit Fruit", JOptionPane.INFORMATION_MESSAGE);
...
if (!(JOptionPane.OK_OPTION))
{
//If the user exits the option pane via the red cross, exit the loop.
break;
}
编辑:此代码不起作用,因为我只是在通过红叉而不是确定按钮关闭JOptionPane.showMessageDialog
时才查找:
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.out.println("Closed");
e.getWindow().dispose();
}
});
即使我按下JOptionPane中的OK选项,代码仍会执行。我只想通过红十字会听出口。
感谢您的帮助。
答案 0 :(得分:2)
首先,只有当用户通过红色x关闭窗口时才会执行非常标准的UI - 而不是通过键入 Alt - F4 ,或双击图标,或 Alt - Space - C ,依此类推;所以我假设你只是意味着关闭而不是按下OK按钮而不是特别是红色x。
您有代码可以检测窗口何时关闭。
当用户按下OK按钮时,您可以检测到代码。
因此设置一个标志以指示按下了OK按钮,如果在窗口关闭时没有设置标志,则用户关闭窗口而不按OK按钮。
答案 1 :(得分:1)
使用关键字“JOptionPanel close listener”进行另一次快速搜索会转到另一个问题。
How can I add a listener on the ok button of JOptionPane?
接受的答案建议检查方法showOptionDialog
的返回值。
但是您可以将方法
JOptionPane.showOptionDialog
与单个方法一起使用 单击“确定”按钮DEFAULT_OPTION
。showOptionDialog
将返回0
如果单击确定,则单击-1
如果用户关闭了对话框。int res = JOptionPane.showOptionDialog(null, "Hello", "Test", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); System.out.println(res);
您不需要监听器,因为javadoc说:
每个showXxxDialog方法都会阻止调用者,直到用户为止 互动已经完成。
这里,正如第一个答案所暗示的那样,关闭与rea cross,关键组合等之间没有区别。但是,我想也许你不需要。