Как узнать, что пользователь не работает с приложением Swing в течение некоторого времени - PullRequest
2 голосов
/ 15 сентября 2011

У нас есть приложение Swing, в настоящее время мне нужно добавить функцию, которая должна выполнять некоторую работу, когда пользователь некоторое время не работает с приложением (например, 5 минут). Я понятия не имею, как это реализовать (возможно, следует отслеживать все события действия, вызванные пользователем, если в течение 5 минут не было выполнено ни одного нового действия, но не знаю как). Будем благодарны за любые предложения.

Ответы [ 3 ]

5 голосов
/ 15 сентября 2011

Добавьте общесистемный 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 для полного списка масок событийВы можете слушать.

4 голосов
/ 15 сентября 2011

да, конечно, эта / есть функция (и) существует, здесь есть обходной путь от @ camickr

0 голосов
/ 15 сентября 2011

Я бы пошел с «мониторингом» действий, как и вы, хотя бы.

Наилучшим подходом было бы получение всех ваших действий из одного базового класса, который, в свою очередь, вызывает какой-то «диспетчер сердцебиения» каждый раз, когда действие вызывается.последний раз, когда метод userDidSomething () вызывался и проверял фоновый таймер, если прошло 5 минут с момента последней записанной метки времени.Если да, запускается задание (в отдельном потоке)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...