当前位置: 首页 > 面试题库 >

如何收听所有组件中的按键(在Java Swing中)?

华章横
2023-03-14
问题内容

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


问题答案:

有可能的。

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

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

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



 类似资料:
  • 问题内容: 在不使用焦点侦听技术的情况下,java gui中捕获Tab键的最简单方法是什么? 问题答案: VK_TAB 是制表符常量。 然而: 请参阅:http : //docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html 要解决此问题,请将以下内容应用于触发关键事件的组件(例如,TextArea): 使用此方法,然后必须显

  • 问题内容: 我想绑定以在按下时关闭活动的反应引导弹出窗口。这是代码 但是,当我按任意键时,控制台中都不会记录任何内容。我也尝试在窗口上以及不同情况下使用’keypress’,’keyup’等来收听,但似乎我做错了。 问题答案: 您应该使用而不是。 Keypress通常仅用于根据文档产生字符输出的键 按键 当按下某个键时会触发keypress事件,并且该键通常会产生一个字符值 按键 按下键时会触发k

  • 问题内容: 我尝试获取时间,而不是用户按下媒体按钮。但是,回调在媒体按钮再次上升时执行。 我不想在我的解决方案中使用BroadcastReceiver。 这是我的代码: 日志输出: 时间停止下来:1473420286380 时间停止下来:1473420286383 我认为这些值之间的差异太小。 问题答案: 我自己解决了这个问题。诀窍是使用 以下示例对其进行解释: 我得到以下日志: event.ge

  • 问题内容: 我正在尝试用Java创建一个简单的Pong游戏,但我不知道如何让两个玩家同时使用键盘。游戏尚不完整,我目前正在为两位玩家进行划桨动作。问题是,当一个玩家按下自己的向上键并向上移动其拨片时,但是如果其他玩家按下其任意键,则会取消先前的玩家动作并导致拨片停止。我想我需要一种同时处理多个键输入的方法。这是我的代码,底部的KeyListeners是我需要帮助的地方。我只有1年的Java程序员,

  • 问题内容: 我有一个霍尼韦尔扫描仪,在扫描条形码时会输出文本。我可以将其用作文本输入的“键盘”,这非常方便,因为我无需进行任何接口。但是它的缺点是必须集中输入并显示移动设备的虚拟键盘,这对于我正在从事的项目是不可接受的。 有什么方法可以在不集中输入的情况下扫描值?我相信,侦听keyPress事件或类似事件将是解决问题的方法,将输入的值存储在textInput之外的其他变量中。 如果有更好的方法可以

  • 问题内容: 我开始学习Java编程,并且我认为通过游戏开发学习Java很酷。我知道如何绘制图像并听按键,然后移动该图像。但是,当窗口正在听按键时,是否可以使图像在窗口中来回移动?例如,当图像或对象(如太空飞船)在窗口中从左向右移动时,如果按空格键,激光将在屏幕底部发射(很酷的:D)。但是基本上,我只是想知道在窗口正在听按键时如何使图像左右移动。 我在想将一个关键侦听器添加到我的窗口,然后触发一个无