关于JOptionPane的showConfirmDialog问题
我写记事本时首先setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);然后对关闭按钮做了如下处理:addWindowL...
我写记事本时 首先 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
然后对关闭按钮做了如下处理:
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
if (selectedFile == null //这个代表是一个空的文档,点击直接退出,成功
&& textArea.getText().equals("")){
System.exit(0);
}else if(JOptionPane.showConfirmDialog(container, "是否保存?",
"是否保存", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION){
//当有文档时,点关闭时弹出对话框,按“取消”则返回,成功
return;
}else if(JOptionPane.showConfirmDialog(container, "是否保存?",
"是否保存", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.NO_OPTION){
//当点关闭,按“否”(即不保存时),还会出现一次对话框,要再按一次“否”才退出
System.exit(0);
}else if(JOptionPane.showConfirmDialog(container, "是否保存?",
"是否保存", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.YES_OPTION){
//当点关闭,点“是”,要三次才可以保存,再退出!
//保存功能代码
}
具体原因看注释处
是不是执行JOptionPane的showConfirmDialog时,只要前面有这个语句,就要执行完啊?
要怎么设置才执行相应点击处得代码啊?抑或是我这个结构不对? 展开
然后对关闭按钮做了如下处理:
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
if (selectedFile == null //这个代表是一个空的文档,点击直接退出,成功
&& textArea.getText().equals("")){
System.exit(0);
}else if(JOptionPane.showConfirmDialog(container, "是否保存?",
"是否保存", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION){
//当有文档时,点关闭时弹出对话框,按“取消”则返回,成功
return;
}else if(JOptionPane.showConfirmDialog(container, "是否保存?",
"是否保存", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.NO_OPTION){
//当点关闭,按“否”(即不保存时),还会出现一次对话框,要再按一次“否”才退出
System.exit(0);
}else if(JOptionPane.showConfirmDialog(container, "是否保存?",
"是否保存", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.YES_OPTION){
//当点关闭,点“是”,要三次才可以保存,再退出!
//保存功能代码
}
具体原因看注释处
是不是执行JOptionPane的showConfirmDialog时,只要前面有这个语句,就要执行完啊?
要怎么设置才执行相应点击处得代码啊?抑或是我这个结构不对? 展开
展开全部
这么回答你吧,你检测完了文件后,发现那个没问题,文件存在且文件有内容.
下面就进你的else if了.你的写法让系统一个个进行判断,只有你选择后,它才确定那条语句的值.所以你的三个else if全让你选择.
你的代码改成如下.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
if (selectedFile == null //这个代表是一个空的文档,点击直接退出,成功
&& textArea.getText().equals("")){
System.exit(0);
}
int res = JOptionPane.showConfirmDialog(container, "是否保存?","是否保存",JOptionPane.YES_NO_CANCEL_OPTION);
然后用res进行判断
if(res == JOptionPane.YES_OPTION){
//当点关闭,点“是”,要三次才可以保存,再退出!
//保存功能代码
}else if(res== JOptionPane.NO_OPTION){
//当点关闭,按“否”(即不保存时),还会出现一次对话框,要再按一次“否”才退出
System.exit(0);
}else if(res== JOptionPane.CANCEL_OPTION){
//当有文档时,点关闭时弹出对话框,按“取消”则返回,成功
return;
}
大体就是这个意思了,不过那个返回值是不是int类型的我就不记得了,这个需要你自己判断下.嘿嘿
下面就进你的else if了.你的写法让系统一个个进行判断,只有你选择后,它才确定那条语句的值.所以你的三个else if全让你选择.
你的代码改成如下.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
if (selectedFile == null //这个代表是一个空的文档,点击直接退出,成功
&& textArea.getText().equals("")){
System.exit(0);
}
int res = JOptionPane.showConfirmDialog(container, "是否保存?","是否保存",JOptionPane.YES_NO_CANCEL_OPTION);
然后用res进行判断
if(res == JOptionPane.YES_OPTION){
//当点关闭,点“是”,要三次才可以保存,再退出!
//保存功能代码
}else if(res== JOptionPane.NO_OPTION){
//当点关闭,按“否”(即不保存时),还会出现一次对话框,要再按一次“否”才退出
System.exit(0);
}else if(res== JOptionPane.CANCEL_OPTION){
//当有文档时,点关闭时弹出对话框,按“取消”则返回,成功
return;
}
大体就是这个意思了,不过那个返回值是不是int类型的我就不记得了,这个需要你自己判断下.嘿嘿
追问
嗯 正确!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询