@nijobore

Как установить задержку на выполнение KeyListener?

Мне нужно чтобы при нажатии на кнопку действие происходило через конкретное время
и следующие нажатие можно совершить через некоторое время
Например: При нажатии на D переменная I увеличилась на 1 через 2 секунды, и следующие нажатие будет доступно через 3 секунды
  • Вопрос задан
  • 74 просмотра
Решения вопроса 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
ExecutorService вам в помощь, плюс делайте disable на вашу кнопку.

myBtn.setEnabled(false);
ExecutorService executor = Executors.newFixedThreadPool(10);
Runnable runnableTask = () -> {
    try {
        TimeUnit.MILLISECONDS.sleep(2000);
        myBtn.setEnabled(true);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
};
executorService.execute(runnableTask);


PS. Еще можно прямо в свинге треды запускать - stackabuse.com/how-to-use-threads-in-java-swing
Ответ написан
Комментировать
@MaxLich
java developer
Так что сложного. После первого нажатия блокируешь (деактивируешь) кнопку, одновременно запускаешь тред, который через указанный промежуток времени выполнить нужное действие. Кроме того, вместе с этим запускаешь ещё один тред, который ждёт указанный промежуток времени, а потом активирует эту кнопку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы