如何发现用户有一段时间没有操作Swing应用程序

时间:2011-09-15 07:49:11

标签: java swing

我们有一个Swing应用程序,目前我需要添加一项功能,即当用户不运行应用程序一段时间(例如5分钟)时,该功能可以完成一些工作。我不知道如何实现这个(可能应该监视用户调用的所有动作事件,如果5分钟,甚至没有新的动作引发作业,但不知道如何)。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:5)

添加系统范围AWTEventListener,以便接收您感兴趣的所有AWTEvents。

例如,以下代码将告诉您鼠标何时进入,退出或在您的挥杆应用程序中单击。每当用户在您的应用程序中键入任何键时,它也会告诉您。根据此信息,您可以启动计时器以跟踪用户“空闲”时间。

Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
    @Override
    public void eventDispatched(AWTEvent event) {
        System.out.println(event);
    }
}, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.KEY_EVENT_MASK);

查看javadocs,了解您可以收听的事件掩码的完整列表。

答案 1 :(得分:4)

是的,确定这个/那里的功能存在,here are excelent workaround由@camickr

答案 2 :(得分:0)

我也会像你一样“监控”这些行动。

最好的方法是从一个基类派生所有操作,每次调用操作时,基类会调用某种“心跳管理器”。

“心跳管理器”记录上次调用userDidSomething()方法的时间,并在后台检查自上次记录的时间戳后是否已经过了5分钟。如果是,则启动作业(在单独的线程中)