我打算做一个隐藏的对话框中我的应用程序获得可见与键盘组合(例如五序贯按Ctrl +移+i)。
如何在整个应用程序中全局捕获键盘组合笔划?对整个应用程序在全球捕获键盘的组合,以显示隐藏的JDialog在Java中
由于
我打算做一个隐藏的对话框中我的应用程序获得可见与键盘组合(例如五序贯按Ctrl +移+i)。
如何在整个应用程序中全局捕获键盘组合笔划?对整个应用程序在全球捕获键盘的组合,以显示隐藏的JDialog在Java中
由于
我解决它通过定义DispatcherListener
:
class DispatcherListener implements KeyEventDispatcher{
private int level=0;
public boolean dispatchKeyEvent(KeyEvent e) {
if(e.getID() == KeyEvent.KEY_RELEASED){
if(e.isControlDown() && e.isShiftDown()){
if(this.level==0 && e.getKeyCode()==KeyEvent.VK_S){
level++;
}else if(this.level==1 && e.getKeyCode()==KeyEvent.VK_H){
level++;
}else if(this.level==2 && e.getKeyCode()==KeyEvent.VK_O){
level++;
}else if(this.level==3 && e.getKeyCode()==KeyEvent.VK_W){
level=0;
this.showHiddenWindow((JFrame)SwingUtilities.getRoot(e.getComponent()));
}else{
level=0;
}
//System.out.println("level: " + level);
}
}
return false;
}
,并用它作为这样的:
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.addKeyEventDispatcher(new DispatcherListener());
谢谢大家
FullScreenTest
是示出如何将在此上下文中使用Action
和Key Bindings一个例子。您可以用KeyEvent.VK_I
和相关的KeyStroke
修饰符替代。你的动作监听器可以保持它被触发的次数。
你知道,很多键盘会呛更多比同时按下两个修饰键,对吗? – thkala 2012-04-14 16:47:57
@thkala:不,我不知道!我从来没有见过这样的情况!但修饰符的数量对我来说并不重要!我只需要一个连续次数按下的组合(即使五个Ctrl + a也可以接受!) – RYN 2012-04-14 17:01:39