模拟记事本关闭功能:建立一个记事本样的窗体,然后我在文本域中输入字符,且不保存。当我点击窗口右上角的关闭按钮时,会弹出一个对话框,提示我是否保存,对话框中有三个按钮:是,否和取消。当我点击取消按钮时,对话框消失,但窗体依然存在(依然消失在屏幕上),请问高手,这个功能怎么实现?在此万分感谢!!!

解决方案 »

  1.   

    在窗口事件里面实现
       this.addWindowListener(new WindowAdapter()
    {
       public void windowClosing(WindowEvent e)
       {
            int t = javax.swing.JOptionPane.showConfirmDialog(null,"","",JOPtionPane.YES_NO_CANCEL_OPTION);
            if(t == JOPtionPane.YES_OPTION){
                System.exit(0);
             }else if(t == JOPtionPane.NO_OPTION){
                    //写你要的效果
            }else if(t == JOPtionPane.CANCLE_OPTION)
             
        }
    });
     
      

  2.   

    我已经试过了,代码没有起到我要的效果,当在ConfirmDialog窗体中点击Cancel按钮,JFrame就消失了,但程序没有结束。
      

  3.   

    那你在else if(t == JOPtionPane.CANCLE_OPTION)语句块里面加个return呢?
      

  4.   


    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;import javax.swing.JFrame;
    import javax.swing.JOptionPane;public class FrameTest {    public static void main(String[] args) {
            JFrame frame = new JFrame("test");
            frame.setSize(500, 400);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent arg0) {
                    int k = JOptionPane.showConfirmDialog((JFrame) arg0.getSource(), "你确定退出程序嘛?",
                            "Exit  Confirm", JOptionPane.YES_NO_OPTION,
                            JOptionPane.QUESTION_MESSAGE);
                    System.out.println("k === "+k);
                    if (k == 0) {
                        System.out.println("exit program");
                        System.exit(0);
                    }else {
                       return ;
                    }
                }
            });
        }
    }
      

  5.   

    我有个笨办法,把当前的frame序列化了保存起来,frame关闭后,需要时再重建此对象.