日期:2014-05-20  浏览次数:20812 次

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

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

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);
    }
}