Добавление таймаута в программу интерфейса пользователя - PullRequest
0 голосов
/ 30 декабря 2018

Я работаю над проектом Java, включающим пользовательский интерфейс, используя класс Button и некоторых слушателей действий.У меня есть несколько кнопок (каждая с прослушивателем действий), и я хочу добавить таймаут для всей программы.Это означает, что если ни одна кнопка не была нажата в течение определенного периода времени, должно быть выполнено определенное действие.

Я попытался добавить ее в базовую функцию while loop + isDisposed ().Насколько мне известно, этот цикл несколько раз проверяет, была ли нажата кнопка.По какой-то причине я не смог получить желаемый результат.Есть ли способ сделать это с классами, которые я упомянул?Я также не смог найти подходящих функций в классе Button.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Весьма вероятно, что вы используете свинг, но, поскольку это не указано, я дам вам общий ответ со ссылками на примеры свингов.

Прежде всего, поскольку все ваши нажатия кнопок будутведут себя очень похожим образом, поэтому вам понадобится пользовательский ActionListener ( пример ).Ваш слушатель настраиваемого действия должен выполнить действие, но установить отметку времени или какое-либо значение даты на текущий момент.Параллельно у вас должно быть событие сердцебиения, которое периодически (часто) запускается и сравнивает текущий момент с отметкой времени, установленной последним нажатием кнопки.И вы можете увидеть пример периодической задачи здесь: Как запланировать периодическую задачу в Java?

0 голосов
/ 30 декабря 2018

Используйте Swing Timer ( javax.swing.Timer ).

Установите его с помощью new Timer(CERTAIN_AMOUNT_OF_TIME, e -> timeoutAction()) (если у вас есть функция timeoutAction), отключите повторение с помощью setRepeats(false) и start() it.

Когда пользователь нажимает кнопку, вызывайте restart().

Кроме того, вы упоминаете класс Button, который является классом AWT.Вместо этого я рекомендую использовать класс Swing JButton.

...