Как получить код нажатия клавиши в Java AWT с помощью keyEventDispatcher ⇐ JAVA
-
Гость
Как получить код нажатия клавиши в Java AWT с помощью keyEventDispatcher
Можно ли получить простой код нажатой клавиши с помощью KeyEventDispatcher? Я пытаюсь перехватить нажатые клавиши, объединить их в строку и отобразить в AWT TextArea (простой текстовый редактор). Проблема в том, что KeyEventDispatcher возвращает три целых числа в трех строках. Вообще говоря, код в теле диспетчера выполняется трижды после нажатия любой клавиши, и я не знаю почему. В первой строке — номер кода ключа, во второй — 0, в третьей — тот же код, что и в первой. Если я нажму любую функциональную клавишу, появятся только два одинаковых числа.
публичный класс KeyEventInterceptionExample { частный статический StringBuilder keyBuffer = новый StringBuilder(); частная статическая TextArea textArea; public static void main(String[] args) { EventQueue.invokeLater(() -> { Frameframe = new Frame("Пример перехвата ключевых событий"); textArea = новая TextArea(); textArea.setEditable(ложь); textArea.setBounds(20, 30, 300, 150); MyKeyEventDispatcher keyEventDispatcher = новый MyKeyEventDispatcher(); KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keyEventDispatcher); Frame.add(textArea); Frame.setSize(350, 220); Frame.setLayout(ноль); Frame.setVisible(истина); Frame.addWindowListener(новый java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent windowEvent) { Система.выход(0); } }); }); } статический класс MyKeyEventDispatcher реализует KeyEventDispatcher { @Override public boolean sendKeyEvent(KeyEvent e) { int cCode = e.getKeyCode()); // я решаю, какой символ будет отображаться textArea.append(myChar); вернуть истину; } } } Мне нужно получить простой целочисленный код нажатой клавиши. Я решу, что отображать, и добавлю это в TextArea. Кроме того, как я могу распознать, какие клавиши нажаты одновременно?
Можно ли получить простой код нажатой клавиши с помощью KeyEventDispatcher? Я пытаюсь перехватить нажатые клавиши, объединить их в строку и отобразить в AWT TextArea (простой текстовый редактор). Проблема в том, что KeyEventDispatcher возвращает три целых числа в трех строках. Вообще говоря, код в теле диспетчера выполняется трижды после нажатия любой клавиши, и я не знаю почему. В первой строке — номер кода ключа, во второй — 0, в третьей — тот же код, что и в первой. Если я нажму любую функциональную клавишу, появятся только два одинаковых числа.
публичный класс KeyEventInterceptionExample { частный статический StringBuilder keyBuffer = новый StringBuilder(); частная статическая TextArea textArea; public static void main(String[] args) { EventQueue.invokeLater(() -> { Frameframe = new Frame("Пример перехвата ключевых событий"); textArea = новая TextArea(); textArea.setEditable(ложь); textArea.setBounds(20, 30, 300, 150); MyKeyEventDispatcher keyEventDispatcher = новый MyKeyEventDispatcher(); KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keyEventDispatcher); Frame.add(textArea); Frame.setSize(350, 220); Frame.setLayout(ноль); Frame.setVisible(истина); Frame.addWindowListener(новый java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent windowEvent) { Система.выход(0); } }); }); } статический класс MyKeyEventDispatcher реализует KeyEventDispatcher { @Override public boolean sendKeyEvent(KeyEvent e) { int cCode = e.getKeyCode()); // я решаю, какой символ будет отображаться textArea.append(myChar); вернуть истину; } } } Мне нужно получить простой целочисленный код нажатой клавиши. Я решу, что отображать, и добавлю это в TextArea. Кроме того, как я могу распознать, какие клавиши нажаты одновременно?
Мобильная версия