用窗口上的叉子关闭程序,是等于执行了哪个方法。我想在单击叉子之后还能执行向数据库写入时间的代码。如记录用户退出时间应该怎么办

解决方案 »

  1.   

    Window类添加侦听器,Window有windowClosing方法,窗口正处在关闭过程中时调用。此时可重写关闭操作。点击那个叉叉,就会执行windowClosing方法,这里就对方法进行重写System.exit(0);安全退出。
    代码参照如下:
    window.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
      

  2.   

    同上
    在System.exit(0)之前执行写入就可以了
      

  3.   

    window.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
    System.exit(0); 

    });这个用来关闭窗口如果要在关闭窗口之后还想向数据库中写入数据,这个写入数据的操作可以放在另一个线程里来做
      

  4.   

    你必须在关闭之前执行在System.exit(0); 之前,你可以给用户制造假象比如隐藏窗口,待做完log后System.exit(0); 会进行关闭。
      

  5.   

    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      

  6.   

    感觉fsolsh说的是我想要的但是我没有学到那里呢。。我要关闭我的主面板。然后记录退出时间。然后退出那么应该在主面板的哪里添加你说的代码。你的意思是把我想写的代码加在public void windowClosing(WindowEvent e){}方法中吧?
      

  7.   

    另外还可以: public static void main(String[] args) {
        Runtime.getRuntime().addShutdownHook(
            new Thread(
                new Runnable() {
                    public void run() {
                        //你要做的操作
                    }
                }
            )
        );
        //main方法中的其它代码
    }//你要做的操作 此处的代码会在你的程序退出之前执行(多少个窗口的程序以哪种方式退出(System.exit(0)或自然退出)都可以使用此方法)。
      

  8.   

    我直接加上去不行的报错说class or interface expected应该是我学的知识有限。我的源码如下谁能细致的告诉我一下。我把window.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
    System.exit(0); 

    });
    加到了程序的最后
    package asset_manage;导入省略
    public class mainFrame extends JFrame {
        JPanel contentPane;
        JMenuBar jMenuBar1 = new JMenuBar();
        JMenu jMenuUserManage = new JMenu();
        JMenuItem jMenuItemUserNew = new JMenuItem();
        JMenuItem jMenuItemUserPassword = new JMenuItem();
        JMenuItem jMenuItemUserMessage = new JMenuItem();
        JMenuItem jMenuItemLog = new JMenuItem();
        JMenuItem jMenuItemExit = new JMenuItem();
        JMenu jMenuAssetManage = new JMenu();
        JMenuItem jMenuItemMessageRejigger = new JMenuItem();
        JMenuItem jMenuItemStyleManage = new JMenuItem();
        JMenu jMenuBorrowMessage = new JMenu();
        JMenuItem jMenuItemShowMessage = new JMenuItem();
        JMenuItem jMenuItemPersonnelMessage = new JMenuItem();
        JMenu jMenuHelp = new JMenu();
        JMenuItem jMenuItemHelpDocument = new JMenuItem();
        JMenuItem jMenuItemAboutUs = new JMenuItem();
        public mainFrame() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(null);
            this.setJMenuBar(jMenuBar1);
            setSize(new Dimension(800, 600));
            setTitle("固定资产管理系统");
            jMenuUserManage.setText("用户管理");
            jMenuItemUserNew.setText("新建用户");
            jMenuItemUserNew.addActionListener(new
                    mainFrame_jMenuItemUserNew_actionAdapter(this));
            jMenuItemUserPassword.setText("密码修改");
            jMenuItemUserPassword.addActionListener(new
                    mainFrame_jMenuItemUserPassword_actionAdapter(this));
            jMenuItemUserMessage.setActionCommand("用户信息");
            jMenuItemUserMessage.setText("用户信息");
            jMenuItemUserMessage.addActionListener(new
                    mainFrame_jMenuItemUserMessage_actionAdapter(this));
            jMenuItemLog.setText("登陆日志");
            jMenuItemLog.addActionListener(new mainFrame_jMenuItemLog_actionAdapter(this));
            jMenuItemExit.setText("注销用户");
            jMenuItemExit.addActionListener(new
                                            mainFrame_jMenuItemExit_actionAdapter(this));
            jMenuAssetManage.setText("资产管理");
            jMenuItemMessageRejigger.setText("信息更改");
            jMenuItemStyleManage.setText("类别管理");
            jMenuBorrowMessage.setText("领用信息");
            jMenuItemPersonnelMessage.setText("人员信息");
            jMenuHelp.setText("帮助");
            jMenuItemHelpDocument.setText("帮助文档");
            jMenuItemAboutUs.setText("关于");
            jMenuItemShowMessage.setText("资产信息");
            jMenuBar1.add(jMenuUserManage);
            jMenuBar1.add(jMenuAssetManage);
            jMenuBar1.add(jMenuBorrowMessage);
            jMenuBar1.add(jMenuHelp);
            jMenuUserManage.add(jMenuItemUserNew);
            jMenuUserManage.add(jMenuItemUserPassword);
            jMenuUserManage.add(jMenuItemUserMessage);
            jMenuUserManage.add(jMenuItemLog);
            jMenuUserManage.add(jMenuItemExit);
            jMenuAssetManage.add(jMenuItemMessageRejigger);
            jMenuAssetManage.add(jMenuItemStyleManage);
            jMenuBorrowMessage.add(jMenuItemShowMessage);
            jMenuBorrowMessage.add(jMenuItemPersonnelMessage);
            jMenuHelp.add(jMenuItemHelpDocument);
            jMenuHelp.add(jMenuItemAboutUs);
        }   其他事件内容省略。。
       
      

  9.   

    this.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { //your codeSystem.exit(0); 

    }); 放到jbInit() 方法中
      

  10.   


    public class MainFrame extends JFrame { 
        JPanel contentPane; 
        JMenuBar jMenuBar1 = new JMenuBar(); 
        JMenu jMenuUserManage = new JMenu(); 
        JMenuItem jMenuItemUserNew = new JMenuItem(); 
        JMenuItem jMenuItemUserPassword = new JMenuItem(); 
        JMenuItem jMenuItemUserMessage = new JMenuItem(); 
        JMenuItem jMenuItemLog = new JMenuItem(); 
        JMenuItem jMenuItemExit = new JMenuItem(); 
        JMenu jMenuAssetManage = new JMenu(); 
        JMenuItem jMenuItemMessageRejigger = new JMenuItem(); 
        JMenuItem jMenuItemStyleManage = new JMenuItem(); 
        JMenu jMenuBorrowMessage = new JMenu(); 
        JMenuItem jMenuItemShowMessage = new JMenuItem(); 
        JMenuItem jMenuItemPersonnelMessage = new JMenuItem(); 
        JMenu jMenuHelp = new JMenu(); 
        JMenuItem jMenuItemHelpDocument = new JMenuItem(); 
        JMenuItem jMenuItemAboutUs = new JMenuItem(); 
        public MainFrame() { 
            try { 
                setDefaultCloseOperation(EXIT_ON_CLOSE); 
                addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e) {
    System.out.println("测试");
    }
                });
                jbInit(); 
            } catch (Exception exception) { 
                exception.printStackTrace(); 
            } 
        }     /** 
        * Component initialization. 
        * 
        * @throws java.lang.Exception 
        */ 
        private void jbInit() throws Exception { 
            contentPane = (JPanel) getContentPane(); 
            contentPane.setLayout(null); 
            this.setJMenuBar(jMenuBar1); 
            setSize(new Dimension(800, 600)); 
            setTitle("固定资产管理系统"); 
            jMenuUserManage.setText("用户管理"); 
            jMenuItemUserNew.setText("新建用户"); 
            jMenuItemUserPassword.setText("密码修改"); 
            jMenuItemUserMessage.setActionCommand("用户信息"); 
            jMenuItemUserMessage.setText("用户信息"); 
            jMenuItemLog.setText("登陆日志"); 
            jMenuItemExit.setText("注销用户"); 
            jMenuAssetManage.setText("资产管理"); 
            jMenuItemMessageRejigger.setText("信息更改"); 
            jMenuItemStyleManage.setText("类别管理"); 
            jMenuBorrowMessage.setText("领用信息"); 
            jMenuItemPersonnelMessage.setText("人员信息"); 
            jMenuHelp.setText("帮助"); 
            jMenuItemHelpDocument.setText("帮助文档"); 
            jMenuItemAboutUs.setText("关于"); 
            jMenuItemShowMessage.setText("资产信息"); 
            jMenuBar1.add(jMenuUserManage); 
            jMenuBar1.add(jMenuAssetManage); 
            jMenuBar1.add(jMenuBorrowMessage); 
            jMenuBar1.add(jMenuHelp); 
            jMenuUserManage.add(jMenuItemUserNew); 
            jMenuUserManage.add(jMenuItemUserPassword); 
            jMenuUserManage.add(jMenuItemUserMessage); 
            jMenuUserManage.add(jMenuItemLog); 
            jMenuUserManage.add(jMenuItemExit); 
            jMenuAssetManage.add(jMenuItemMessageRejigger); 
            jMenuAssetManage.add(jMenuItemStyleManage); 
            jMenuBorrowMessage.add(jMenuItemShowMessage); 
            jMenuBorrowMessage.add(jMenuItemPersonnelMessage); 
            jMenuHelp.add(jMenuItemHelpDocument); 
            jMenuHelp.add(jMenuItemAboutUs); 
        } 
        public static void main(String[] args){
         MainFrame f=new MainFrame();
         f.setVisible(true);
        }
    }
      

  11.   

     
    private void addListener() {
            this.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
     }
      

  12.   

    把方法写在System.exit(0);前面就OK了