我有一个Java程序。当我运行程序时,它会给我一个GUI,我附上。
当我要关闭它时,它会提示确认对话框。如果我按下是按钮,它将使用System.exit()
退出程序。
public static void main(String args[])
{
ButtonTest app = new ButtonTest( );
app.addWindowListener(
new WindowAdapter( )
{
public void windowClosing (WindowEvent e)
{
String message = " Really Quit ? ";
String title = "Quit";
int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
}
);
}
如果我不想退出该计划,我该怎么办? System.continued()
?
答案 0 :(得分:3)
在这种情况下你不需要其他
答案 1 :(得分:3)
尝试设置此项,
app.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
<强> [编辑] 强>
所以,你的代码会变成这样的,
public static void main(String args[]) {
ButtonTest app = new ButtonTest();
app.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int reply = JOptionPane.showConfirmDialog(null,
"Really Quit ?", "Quit", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION)
System.exit(0);
}
});
app.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
app.setSize(640, 480);
app.setVisible(true);
}
<强> [说明] 强>
你可能会想到为什么会这样。与JFrame
不同,Frame
的窗口关闭按钮的行为是隐藏窗口。因此,无论如何它都会隐藏/关闭窗口。但是当您指定它还必须退出程序时,当用户单击yes
时。然后,除了关闭窗口,它还退出程序。当用户点击no
时,它无论如何都会关闭窗口。因此,您必须明确告诉DO_NOTHING_ON_CLOSE
。
<强> [文件] 强>
与Frame不同,JFrame有一些关于如何响应的概念 用户尝试关闭窗口。默认行为是简单的 用户关闭窗口时隐藏JFrame。要更改默认值 行为,您调用方法setDefaultCloseOperation(int)。要做 使用时,JFrame的行为与Frame实例相同 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)。
参考:JFrame docs
答案 2 :(得分:1)
如果您要问我,我将继续YES SELECTION
,而不是突然关闭我的申请System.exit(0)
,我将选择使用{{1}关闭我的申请的优雅方式在frameObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
上,我会选择NO SELECTION
。以下是一个示例程序供您使用:
frameObject.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)
答案 3 :(得分:0)
如果您希望程序在按NO时继续,请将其余代码放在else块中,或者调用已放置其余代码的函数。
如果您不想在NO按钮上放置任何操作,则删除else块也是一个选项,因为JOptionPane.showConfirmDialog()将会关闭。您可以在if语句后继续使用其余代码。
仅供参考 - 没有System.continue()。该程序几乎可以自行完成。
答案 4 :(得分:0)
您可以添加else
块。如果你想再次运行main方法(我假设你这样做)它应该是这样的。如果用户选择no,您应该运行一些方法,无论是主方法main(null)
还是其他方法。
public static void main(String args[])
{
ButtonTest app = new ButtonTest( );
app.addWindowListener(
new WindowAdapter( )
{
public void windowClosing (WindowEvent e)
{
String message = " Really Quit ? ";
String title = "Quit";
int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION)
{
System.exit(0);
}
else
{
//whatever you plan on running instead here, instead of quitting,
//main(null) to run the main method, or put another method if you want
}
}
}
);
}