Как заставить нажатие клавиши клавиатуры выполнить метод один раз, когда он нажат в методе, который выполняется 20 раз в секунду?

#java

#java

Вопрос:

У меня есть метод, который выполняется 20 раз в секунду в любое время. Давайте вызовем его tick() . Теперь у меня есть метод, который возвращает true логическое значение при нажатии клавиши «J», давайте назовем его keyJIsDown() . Теперь у меня есть метод, который я хотел бы выполнять один раз при каждом нажатии клавиши J, давайте назовем его method21() , если бы я должен был сделать что-то вроде этого:

 tick(){
if (keyJIsDown()){
method21();
}
}
  

method21 Будет выполняться каждый раз tick() , когда выполняется, пока keyJIsDown() значение true. Теперь, как я уже сказал. Я бы хотел method21 , чтобы он выполнялся один раз при каждом нажатии клавиши J, и вот тут я как бы застрял.
Я искал в Интернете похожую проблему, но, похоже, не смог найти ничего похожего на мое. Я довольно начинающий программист, ориентированный только на хобби. В последнее время я неплохо занимался разработкой небольшого мода для minecraft, и теперь я столкнулся с этим блоком. Любая помощь будет оценена.

Я знаю, что этот вопрос не обязательно зависит от языка, но java — это то, что я использую.

Комментарии:

1. Если единственным интерфейсом является keyJIsDown то, что вы не можете определить, была ли кнопка отпущена и нажата снова между двумя тиками, поэтому вы не сможете обрабатывать два случая по-разному. Вам понадобится более мощный интерфейс для клавиатуры. В основном вам нужна информация о событиях клавиатуры, а не только информация о состоянии.

2. Вы изучали debouncing — я думаю, что это поисковый запрос, который вы должны искать.

3. Спасибо вам двоим, я обязательно изучу то, что вы описали!