addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int dialog=JOptionPane.showConfirmDialog(null,"是否保存表中信息","选 择",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
//dialog=0选择:是
if(dialog==0){
//保存
}
//dialog==1 选择:否
else if(dialog==1){
dispose();不保存
}
//dialog==2选择:取消,dialog==-1:当用户都不选直接关掉对话框时
else if(dialog==2||dialog==-1){
????这该怎么写?就是关闭了对话框,而不关闭原窗口。
}
}
});
public void windowClosing(WindowEvent e) {
int dialog=JOptionPane.showConfirmDialog(null,"是否保存表中信息","选 择",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
//dialog=0选择:是
if(dialog==0){
//保存
}
//dialog==1 选择:否
else if(dialog==1){
dispose();不保存
}
//dialog==2选择:取消,dialog==-1:当用户都不选直接关掉对话框时
else if(dialog==2||dialog==-1){
????这该怎么写?就是关闭了对话框,而不关闭原窗口。
}
}
});
解决方案 »
- SH的问题,大家来帮忙看看
- 为什么有时出来窗体后必须拉大一下窗体组件才能显示出来?
- JAVA 直接运行一个DLL的命令行格式是什么样的
- 找出BUG成功运行24小时不死,散分!
- 怎样在java中实现查看系统(非JVM)的内存(已用?空闲?),cpu使用情况(已用?空闲?).好急呀...
- 真心的请教大家!!Java对我来说是一个全新的世界,我现在还不知道是什么?我很想征服它
- JDK安装后如何配置?
- java中的输入小问题,急急急急
- 请问哪有《Java 2核心技术》下载?
- 如何將多個.class轉成一個.jar的文件???
- 做了份作业题 有些错误 希望有能力的人抽空帮忙看看
- 菜鸟提问 :这个图片怎么显示不出来,是哪里的问题,代码如下
当然会把原窗口关了啊。
JOptionPane.showConfirmDialog这个出现的是模态对话框。
程序执行到if(dialog==0)的时候对话框已经关掉了。不用你专门去处理。
如果说????处不写任何东西会使JFrame也关掉的话也许是你用的监听方式错了.
public void windowClosing(WindowEvent e) {
这么写吗?
如果你知道的话,帮忙写一下吧。谢谢!
public void windowClosing(WindowEvent e) {
int dialog=JOptionPane.showConfirmDialog(null,"是否保存表中信息","选 择",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
//dialog=0选择:是
if(dialog==0){
//保存
}
//dialog==1 选择:否
else if(dialog==1){
dispose();不保存
}
//dialog==2选择:取消,dialog==-1:当用户都不选直接关掉对话框时
else if(dialog==2||dialog==-1){
????这该怎么写?就是关闭了对话框,而不关闭原窗口。
}
}
});
你不用那么麻烦的 就写 if(dialog=JOptionPane.YES_OPTION){
//可以为空 也就是说我没判定它 它自己调用自己的方法你自动点击的时候它就回销毁自己了
}
import java.awt.event.WindowEvent;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;public class tswing extends JFrame {
JTextArea jta = null; tswing() {
this.setBounds(100, 100, 500, 600);
this.setVisible(true);
jta = new JTextArea();
this.getContentPane().add(jta, BorderLayout.CENTER);
this.setVisible(true); } protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) { int dialog = JOptionPane.showConfirmDialog(null, "close the window?", "choose",
JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
if (dialog == 0) {
dispose();
System.out.println("you choose yes");
} else if (dialog == 1) {
jta.setText("you choose no");
} else if (dialog == 2 || dialog == -1) {
jta.setText("you choose cancle");
}
} } public static void main(String[] args) {
new tswing();
}
}
processWindowEvent 是在窗口的某个动作发生之前触发,它通过WindowEvent
的id 来判断窗口到底是要做什么动作。打个比方,windowClosing 就好比头已经
砍了,然后才拿来了免死金牌,可惜已经手起刀落,来不及了。而 processWindowEvent
则是在午时还没到之前,传来圣旨刀下留人,自然可以留住了。