В моей программе есть кнопка Jbutton (с именем «Очистить»), которая очищает несколько текстовых полей в графическом интерфейсе. Я хочу заменить эту кнопку клавишей Escape, чтобы нажатие клавиши Escape было таким же, как нажатие этой кнопки. (Я не хочу, чтобы эта Jbutton была в моей программе)
Как заменить Jbutton клавишей Escape в java?
comment
возможный дубликат Swing: как закрыть диалоговое окно при нажатии клавиши ESC?
- person Maroun   schedule 12.09.2013
Ответы (3)
По сути, вы хотите начать с использования привязки клавиш.
Лично я бы привязал вашу кнопку "Очистить", чтобы у использования было два варианта... например...
JButton clear = new JButton("Clear");
InputMap im = clear .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = clear .getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "clear");
am.put("clear", new ClearFieldsAction());
person
MadProgrammer
schedule
12.09.2013
Если вы хотите удалить кнопку и слушать ключевые события для приложения отверстия, вы можете создать
и зарегистрируйте эту очередь событий в
Toolkit.getDefaultToolkit().getSystemEventQueue().push(INSTANCE_EVENT_QUEUE);
Метод
защищенная недействительная диспетчеризацияEvent (AWTEvent e)
получите AWTEvent, с которым вы можете справиться. Нравится:
@Override
protected void dispatchEvent(AWTEvent e) {
// handle event and/or
super.dispatchEvent(e);
}
Ключевое событие, которое вы обрабатываете как
private void handleAWTEvent(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent keyEvent = (KeyEvent)event;
if (keyEvent.getID() != KeyEvent.KEY_PRESSED) {
return;
}
if (keyEvent.isAltDown() ^ keyEvent.isControlDown() && !keyEvent.isShiftDown()) {
...
person
Markus Lausberg
schedule
12.09.2013
попробуй это, у меня работает
InputMap im = clear.getRootPane().getInputMap(...
ActionMap am = clear.getRootPane().getActionMap(...
person
Ico
schedule
24.04.2020