Код: Выделить всё
JToolBar customizeKeys = new JToolBar();
customizeKeys.add(new ChangeKeyListen("left"));
private class ChangeKeyListen extends AbstractAction{
private JDialog myDialog;
class KeyGetter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
OtherPanel.this.map(
KeyEvent.getKeyText(e.getKeyCode()),
keyAction);
myDialog.setVisible(false);
myDialog.removeKeyListener(getKeyListeners()[0]);
}
};
public ChangeKeyListen(String name) {
super(name);
}
@Override
public void actionPerformed(ActionEvent e) {
myDialog = new JOptionPane().createDialog("Press a key");
myDialog.setVisible(true);
myDialog.requestFocusInWindow();
System.out.println(myDialog.getFocusableWindowState());
myDialog.addKeyListener(new KeyGetter());
System.out.println( myDialog.getKeyListeners());
}
}
Для отладки я сначала убедился, что JDialog может быть фокусируемым, чтобы он мог получать ключевые события с клавиатуры. Я сделал это с помощью этой строки
Код: Выделить всё
System.out.println(myDialog.getFocusableWindowState());
Код: Выделить всё
System.out.println( myDialog.getKeyListeners());
Код: Выделить всё
[Ljava.awt.event.KeyListener;@350b914b
Затем я извлек из памяти похожие темы.
Моя проблема не может быть в том, что прослушиватель Jbutton не срабатывает, почему? потому что появилось диалоговое окно, и я убедился, что прослушиватель ключа был добавлен со строкой прослушивателей ключа печати.
Я не смог использовать то, что сказал пользователь в разделе «Попытка использовать прослушиватель клавиш», потому что мне нужно прослушивать нажатие клавиши и использовать это нажатие клавиши позже в моей программе.
И это тоже не помогает. Почему этот KeyEvent не будет работать?
потому что мне нужна общая реакция на нажатия клавиш, чтобы узнать, какая клавиша была нажата.
Я знаю, что keyPressed не выполняется, потому что я поставил внутри точку останова метод и этот оператор печати
Код: Выделить всё
System.out.println(KeyEvent.getKeyText(e.getKeyCode()));
Кто-нибудь знает, как я могу решить эту проблему?< /п>
Подробнее здесь: https://stackoverflow.com/questions/271 ... sed-method
Мобильная версия