В Swing, как применить KeyListener без какого-либо конкретного компонента - PullRequest
3 голосов
/ 22 сентября 2011

Обычно мы применяем Key Listener к определенным компонентам, таким как текстовое поле, поля пароля и т. Д. Но я бы хотел обобщить это поведение слушателя, чтобы оно было применимо ко всем.

Ответы [ 2 ]

6 голосов
/ 22 сентября 2011

Swing был разработан для использования с привязками клавиш, которые могут делать то, что вы хотите. Я бы начал с проверки привязок клавиш . Не забудьте прочитать учебник по Swing для полной информации.

Если это не поможет, см. Глобальные прослушиватели событий для нескольких предложений.

1 голос
/ 22 сентября 2011

Все компоненты качелей являются JComponent.Вы можете использовать все это в качестве JComponent:

@Override
public void keyTyped(KeyEvent e) {
   JComponent component = (JComponent) e.getSource();
   // TODO Implements your action
}

Вы можете видеть, что это ограниченный подход.

Вы также можете работать согласно классу вашего источника:

@Override
public void keyTyped(KeyEvent e) {
    Object source = (JComponent) e.getSource();

    if (source instanceof JTextField) {
        // TODO Implment action for JTextField
    } else if (source instanceof JTextArea) {
        // TODO Implment action for JTextArea
    }
}

В зависимости от ваших потребностей вы можете использовать API Reflections для этого ...

...