如何监听所有组件的按键(在 Java Swing 中)? [英] How can I listen for key presses (within Java Swing) across all components?

查看:48
本文介绍了如何监听所有组件的按键(在 Java Swing 中)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想侦听诸如 Control+S 之类的组合键,而无需向 Swing 应用程序中的每个组件添加键侦听器.我怎样才能做到这一点?

I would like to listen for key combinations such as Control+S without adding key listeners to each component in my Swing application. How can I achieve this?

推荐答案

有可能.

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

这将抓取所有关键事件.返回 false 允许键盘焦点管理器恢复对各种组件的正常键事件分派.

That will grab all key events. Returning false allows the keyboard focus manager to resume normal key event dispatching to the various components.

如果您想捕捉组合键,您可以保留一组按下的键".每当按下某个键时,将其添加到集合中并检查集合中已有哪些键.释放键后,将其从集合中删除.

If you want to catch key combos, you can keep a set of "pressed keys." Whenever a key is pressed, add it to the set and check what keys are already in the set. When a key is released, remove it from the set.

这篇关于如何监听所有组件的按键(在 Java Swing 中)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆