首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用窗口上的叉子关闭程序,是等于执行了哪个方法。我想在单击叉子之后还能执行向数据库写入时间的代码。如记录用户退出时间应该怎么办 [已结帖,结帖人:yuyistar]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuyistar
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-06-20 16:14:43 楼主
    用窗口上的叉子关闭程序,是等于执行了哪个方法。我想在单击叉子之后还能执行向数据库写入时间的代码。如记录用户退出时间应该怎么办
    40  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net_test
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 16:14:461楼 得分:0
    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-20 16:14:41的汇总数据:
    注册日期:2008-1-26
    上次登录:2008-6-20
    发帖数:55                发帖分:1200             
    结贴数:52                结贴分:1120             
    结贴率:94.55%        结分率:93.33%       
    值得尊敬
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fsolsh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 17:20:412楼 得分:20
    Window类添加侦听器,Window有windowClosing方法,窗口正处在关闭过程中时调用。此时可重写关闭操作。点击那个叉叉,就会执行windowClosing方法,这里就对方法进行重写System.exit(0);安全退出。
    代码参照如下:
    window.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • musiclee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 20:10:573楼 得分:0
    同上。。。。。。
    在System.exit(0)之前执行写入就可以了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kuyesuifeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 20:16:354楼 得分:0
    Java code
    window.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });


    这个用来关闭窗口

    如果要在关闭窗口之后还想向数据库中写入数据,这个写入数据的操作可以放在另一个线程里来做
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sunyujia
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 21:16:465楼 得分:0
    你必须在关闭之前执行在System.exit(0); 之前,你可以给用户制造假象比如隐藏窗口,待做完log后System.exit(0); 会进行关闭。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hmsuccess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 21:30:446楼 得分:0
    Java code
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuyistar
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 21:35:407楼 得分:0
    感觉fsolsh说的是我想要的。。。但是我没有学到那里呢。。我要关闭我的主面板。然后记录退出时间。然后退出。。。那么应该在主面板的哪里添加你说的代码。。。。你的意思是把我想写的代码加在public void windowClosing(WindowEvent e){}方法中吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kuyesuifeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 21:51:428楼 得分:0
    引用 7 楼 yuyistar 的回复:
    感觉fsolsh说的是我想要的。。。但是我没有学到那里呢。。我要关闭我的主面板。然后记录退出时间。然后退出。。。那么应该在主面板的哪里添加你说的代码。。。。你的意思是把我想写的代码加在public void windowClosing(WindowEvent e){}方法中吧?


    正确
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sagezk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-20 22:19:269楼 得分:0
    另外还可以:
    Java code
    public static void main(String[] args) { Runtime.getRuntime().addShutdownHook( new Thread( new Runnable() { public void run() { //你要做的操作 } } ) ); //main方法中的其它代码 }

    //你要做的操作 此处的代码会在你的程序退出之前执行(多少个窗口的程序以哪种方式退出(System.exit(0)或自然退出)都可以使用此方法)。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuyistar
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-21 23:22:3710楼 得分:0
    我直接加上去不行的报错说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);
        }

      其他事件内容省略。。
     
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xian_hf
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-22 10:52:2811楼 得分:0
    this.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {

    //your code

    System.exit(0);
    }
    }); 放到jbInit() 方法中
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sunyujia
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-22 10:59:0012楼 得分:20
    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); } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jayray007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-22 15:15:3213楼 得分:0
    Java code
    private void addListener() { this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jayray007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-22 15:16:3214楼 得分:0
    把方法写在System.exit(0);前面就OK了
    修改 删除 举报 引用 回复