我想在不向我的Swing应用程序中的每个组件添加按键侦听器的情况下侦听诸如Control + S之类的按键组合。我该如何实现?

最佳答案

有可能的。

KeyboardFocusManager.getCurrentKeyboardFocusManager()
  .addKeyEventDispatcher(new KeyEventDispatcher() {
      @Override
      public boolean dispatchKeyEvent(KeyEvent e) {
        System.out.println("Got key event!");
        return false;
      }
});

这将捕获所有关键事件。返回false可使键盘焦点管理器恢复分配给各个组件的常规键事件。

如果您想捕捉按键组合,则可以保留一组“按键”。每当按键被按下时,将其添加到集合中并检查集合中已经有哪些键。释放键后,将其从集中移除。

关于java - 如何收听所有组件中的按键(在Java Swing中)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5344823/

10-14 12:06