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