【问题标题】:How to catch only "visible" keys from KeyEvent in Java?如何从 Java 中的 KeyEvent 中仅捕获“可见”键?
【发布时间】:2014-03-04 01:33:22
【问题描述】:
我有一个 KeyEvent 对象,如果键是可见的,我只想处理它。可见我的意思是像这些字符之一abcdefghijklmnopqrstuvwxy1234567890^°!"§$%&/()=?`@+#*',.-;:_"
我不想处理 SPACE、ESC、BACKSPACE、DEL...
我现在打电话的是e.isActionKey(),如果是,我不会处理它。但这仅包括几个键,例如 PAGE_UP、PAGE_DOWN。
过滤掉所有我不想要的键的最佳方法是什么?
【问题讨论】:
标签:
java
keyboard
key
keyevent
【解决方案1】:
嗯,我基本上已经给出了答案:)
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
String validString = "^°1!2\"§3$4%5&6/7{(8[)9]=0}?ß\\`´q@we€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;
}
});