在整个应用程序上全局捕获键盘组合以在Java中显示隐藏的JDialog
我将在我的应用程序中创建一个隐藏对话框,通过键盘组合(例如,五个顺序Ctrl+Shift+I)可以看到该对话框。在整个应用程序上全局捕获键盘组合以在Java中显示隐藏的JDialog,java,swing,global,keyboard-events,Java,Swing,Global,Keyboard Events,我将在我的应用程序中创建一个隐藏对话框,通过键盘组合(例如,五个顺序Ctrl+Shift+I)可以看到该对话框。 如何在整个应用程序上全局捕获键盘组合笔划 “谢谢”是一个示例,展示了如何在这种情况下使用操作。您可以替换KeyEvent.VK_I和相关的击键修饰符。您的动作监听器可以记录它被触发的频率。是一个示例,展示了如何在这种情况下使用动作。您可以替换KeyEvent.VK_I和相关的击键修饰符。您的操作侦听器可以记录它被触发的频率。我通过定义一个DispatcherListener解决了这个
如何在整个应用程序上全局捕获键盘组合笔划
“谢谢”是一个示例,展示了如何在这种情况下使用
操作。您可以替换KeyEvent.VK_I
和相关的击键
修饰符。您的动作监听器可以记录它被触发的频率。是一个示例,展示了如何在这种情况下使用动作。您可以替换KeyEvent.VK_I
和相关的击键
修饰符。您的操作侦听器可以记录它被触发的频率。我通过定义一个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());
谢谢大家我通过定义一个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());
谢谢大家你们知道很多键盘会因为同时按下两个以上的修改键而窒息,对吧?@thkala:不,我不知道!我从没见过这样的情况!但是修饰符的数量对我来说并不重要!我只需要一个连续按多次的组合(即使是5个Ctrl+a也是可以接受的!)你知道很多键盘会因为同时按下两个以上的修改键而窒息,对吧?@thkala:不,我不知道!我从没见过这样的情况!但是修饰符的数量对我来说并不重要!我只需要一个组合,可以连续按多次(即使按5次Ctrl+a也是可以接受的!)