2014-02-06 1 views
0

У меня есть объект KeyEvent, и я хочу обработать его только в том случае, если ключ является видимым. С видимым я имею в виду, как один из этих символов abcdefghijklmnopqrstuvwxy1234567890^°!"§$%&/()=?`@+#*',.-;:_" я не хочу, чтобы обрабатывать пространство, ESC, Backspace, DEL ...Как поймать только «видимые» ключи от KeyEvent в Java?

Что я звоню сейчас является e.isActionKey() и если это так, я не обрабатываем Это. Но это включает только несколько ключей, таких как PAGE_UP, PAGE_DOWN.

Каков наилучший способ отфильтровать все ключи, которые я не хочу?

ответ

0

Ну я в принципе уже дал ответ :)

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { @Override public boolean dispatchKeyEvent(KeyEvent e) { String validString = "^°1!2\"§3$4%5&6/7{(8[)9]=0}?ß\\`´[email protected]€rtzuiopü*+~asdfghjklöä'#<>yxcvbnmµ;,:._-"; if (e.getID() == KeyEvent.KEY_TYPED && validString.indexOf(String.valueOf(e.getKeyChar()).toLowerCase()) != -1) { if (CardPanelView.this.cardLayout.getCurrentCard() == tabbedPane) { CardPanelView.this.controller.callSetSearchText(Character.toString(e.getKeyChar())); } } return false; } });

Смежные вопросы