我使用这个代码,以确认是否要退出或没有时,他点击的JFrame红十字会关闭按钮(右上角)用户
Object[] options = {"Quit, My Computing Fellow", "No, I want to Work more"};
int Answer = JOptionPane.showOptionDialog(null, "What would you like to do? ","Quit:Continue", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options,options[1]);
if(Answer == JOptionPane.YES_OPTION){
System.exit(0);
}
else if (Answer == JOptionPane.CANCEL_OPTION) {
return;
}
但问题是,如果用户点击CANCEL_OPTION框架关闭所有,但我希望用户仍然打开框架,而不是允许框架关闭。 指导我如果我做了错误或其他什么东西?
只是这样做:
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
你可以尝试这样的事情:
import javax.swing.*;
import java.awt.event.*;
public class MyFrame extends JFrame
{
public MyFrame()
{
setTitle("Close Me");
setSize(200,200);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent evt)
{
Object[] options = {"Quit, My Computing Fellow", "No, I want to Work more"};
int answer = JOptionPane.showOptionDialog(MyFrame.this, "What would you like to do? ","Quit:Continue", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options,options[1]);
if(answer == JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
});
}
public static void main(String st[])
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
MyFrame mf = new MyFrame();
mf.setVisible(true);
}
});
}
}
作为一个方面说明,我建议你坚持使用Java命名约定。 例如变量名称不应该用大写字母开头,类名应该总是以大写字母。而更多的开始。 看看这里 的代码约定Java编程语言
尝试是这样的:
{
...
yourFrame.setDefaultCloseOperation(close());
...
}
private int close() {
if(yourCondition)
return JFrame.DO_NOTHING_ON_CLOSE;
else
return JFrame.EXIT_ON_CLOSE;
}
我有一个真正的大错
Object[] options = {"Quit, My Computing Fellow", "No, I want to Work more"};
int Answer = JOptionPane.showOptionDialog(null, "What would you like to do?","Quit:Continue", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options,options[1]);
if(Answer == JOptionPane.YES_OPTION){
System.exit(0);
}
else if (Answer == JOptionPane.CANCEL_OPTION) {
return;
}
很明显,我有两个选择,即YES_NO_OPTION和我打电话,这是一个真正的错误,因此CANCEL_OPTION中,ELSE-IF应改为:
else if (Answer == JOptionPane.NO_OPTION) {
this.setDefaultCloseOperation(myclassreference.DO_NOTHING_ON_CLOSE);
}
在这之后; 它的宾果! 我弄完了!