Java Curses имеет несколько специфических методов распознавания нажатий клавиш, но привязка себя к внешней библиотеке для одной функции может быть не лучшим решением.
То, чего вы хотите, может быть достигнуто путем создания терминала-стиль Swing и использование KeyListener
для обнаружения событий нажатия клавиш.Однако в MadProgrammer отмечает, как заставить esc остановить метод , что такое решение может иметь "проблемы с фокусом".
Так что, если вы хотите отследить определенные нажатия клавиш или хотите повлиять на поведение программыосновываясь на различных пользовательских вводах, я бы рекомендовал использовать привязки клавиш , которые реализованы как часть Swing.
например,
component.getInputMap(WHEN_IN_FOCUSED_WINDOW).put
(KeyStroke.getKeyStroke("F1"),"actionName");
component.getActionMap().put("actionName", yourAction);
Где компонент - любой объект JComponent
(предположительно дисплей терминала), и yourAction
- любое действие Swing.Использование параматеризованной формы getInputMap()
, как показано здесь, предпочтительнее для «консольного» приложения, поскольку пользователь обязательно будет нажимать клавиши в окне верхнего уровня, и, следовательно, фокусировка компонента не имеет значения.