我刚学Java没几个星期,现在用java编了一个记事本,定义了一个窗口适配器类,当点击那个关闭窗口时,会弹出对话框,有保存,不保存,取消,但是点取消,窗口还是关闭了,不像点击菜单项的退出那样,点击取消还是会留在编辑区,这个怎么解决? ( 实现部分的代码和菜单项下的退出的实现代码一样)
下面是定义和实现的程序代码:
//定义一个窗口监听器
addWindowListener( new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
exitForm(event);
}
});
//当应用程序关闭时被调用
private void exitWindow(WindowEvent event)
{
int n;
Object[] option = {"保存","不保存","取消"};
if(changed == true)
{
//打开对话框
n = JOptionPane.showOptionDialog(null,
"你的文件还没有保存,是否保存?",
"保存",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
option,
option[0]);
switch(n)
{
case JOptionPane.YES_OPTION:
{
doSave(fileName);//保存文件
System.exit(0);
}
case JOptionPane.NO_OPTION:
{
System.exit(0);
}
case JOptionPane.CANCEL_OPTION:
{
break;
}
}
}
}
下面是定义和实现的程序代码:
//定义一个窗口监听器
addWindowListener( new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
exitForm(event);
}
});
//当应用程序关闭时被调用
private void exitWindow(WindowEvent event)
{
int n;
Object[] option = {"保存","不保存","取消"};
if(changed == true)
{
//打开对话框
n = JOptionPane.showOptionDialog(null,
"你的文件还没有保存,是否保存?",
"保存",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
option,
option[0]);
switch(n)
{
case JOptionPane.YES_OPTION:
{
doSave(fileName);//保存文件
System.exit(0);
}
case JOptionPane.NO_OPTION:
{
System.exit(0);
}
case JOptionPane.CANCEL_OPTION:
{
break;
}
}
}
}
解决方案 »
- 将Log4J封装成一个class,但是使用该封装class,无法定位错误到错误发生的类,或错误发生的那一行,
- 死锁程序中的小发现 求高手解答~~~
- 求数据结构好书
- 如何将用for循环产生数组进行保存?
- 初学 问一个简单的问题
- 请问一个日志小问题,没分了不好意思啊
- jdk和环境变量的问题
- 如何在jdk中添加/设置cocoon2.1的类库,可以免去在classpath中的设置,同时可以使得cocoon正常运行?在线等待
- 请教高手:java 如何调用c/c++的动态链接库(dll, so)?
- jre为什么不需要设置classpath?
- 一个50%的人都不知道多线程调度问题
- ServerSocket读了再写的问题
{
public void windowClosing(WindowEvent event)
{
exitForm(event);//这里仅仅是执行了exitForm;而exitForm中并没有阻止窗口关闭的操作.,
});
{
break;
}//虽然你这里没有执行exit,但是windowClosing方法照样继续执行,关闭窗口状态并没有改变.
//
case JOptionPane.YES_OPTION:
{
doSave(fileName);//保存文件
System.exit(0);//把这句注释掉,选择Yes依然会关闭窗口
}
LZ在窗口构造函数里加上
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);//在点击关闭时不做任何事,手动退出程序
这样就可以了