Есть ли в Java метод, который просто возвращает нажатую в данный момент клавишу?
Как например метод getch() из msvcrt в python, там все вообще легко:
from msvcrt import getch, kbhit
while 1:
if kbhit():
print(getch())
Хочу сделать примерно тоже в Java.
Если что, хочу сделать что-то типа змейки в консольном окне
Отсюда:
1) Определение по коду источник события:
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
formKeyPressed(evt);
}
});
2) Проверяем нажатую клавишу:
private void formKeyPressed(java.awt.event.KeyEvent evt) {
switch (evt.getKeyCode()) {
case KeyEvent.VK_BACK_SPACE:
break;
case KeyEvent.VK_ENTER: //Нажата клавиша Enter
break;
default:
}
}
Вообще, на похожий вопрос уже отвечали.
By Selden:
Средствами Java реализовать консольный отлов нажатия функциональных клавиш невозможно. Отловить удастся только клавиши, добавляющие в консоль некоторый символ.
Варианты решения:
Написать свое AWT/Swing или даже SWT - приложение, имитирующее консоль, но вместо нее содержащее текстовое поле, к которому уже навесить нужные слушатели.
Выбрать клавишу (или сочетание клавиш), вводящую в консоль некоторый символ (например, "+" и "-" для переключения переменной). И попробовать убирать этот символ из консоли, дописывать в нее желаемые результаты и т.д (в том, что удастся такое реализовать - сомневаюсь).
В обоих случаях нужно не забыть позаботиться о кроссплатформенности приложения, иначе использовать Java для подобных целей вообще не стоит.
А вообще, могли бы погуглить. Есть куча хороших статей про игры на Java.
Например, WikiBooks или TProger.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей