【问题标题】:Detecting if a key (CTRL) is currently pressed without a KeyEvent in Java在 Java 中检测当前是否在没有 KeyEvent 的情况下按下了键 (CTRL)
【发布时间】:2012-08-21 17:01:06
【问题描述】:

我需要能够查看在处理鼠标事件期间当前是否按下了 CTRL 键。我曾尝试使用 KeyListener,但由于焦点问题,尝试同时使用鼠标事件和键事件被证明是一个问题。

我实际上想要完成的是使用 CTRL 键选择多个对象,就像在 Windows 中一样。

如果在我的鼠标事件中,我可以检查 CTRL 键的状态,那会容易得多...

你能用 Java 做到这一点吗?

谢谢。

【问题讨论】:

  • 值得指出的是,大多数 GUI 列表组件都内置了对多选(连续和非连续)的支持。例如JList.setSelectionMode.

标签: java ctrl


【解决方案1】:

使用getModifiers() 检测按下的键..

例如:

if ((event.getModifiers() & ActionEvent.CTRL_MASK) ==ActionEvent.CTRL_MASK) {
System.out.println("CTRL KEY PRESSED");
}

【讨论】:

  • 是的,这行得通...谢谢你的例子,它很好用!!
【解决方案2】:

MouseEvent 扩展自 InputEvent,我认为您仍然可以通过 getModifiers() 从该对象中获取修饰符,以查看是否按下了 ctrl 键。不过我还没有测试过。

【讨论】:

  • 是的,你可以获得鼠标事件的修饰符——我已经做到了。事实上,IIRC 在旧版 JVM 上的右键单击是作为 CTRL+LeftClick 发送的。
猜你喜欢
  • 1970-01-01
  • 2013-08-21
  • 2017-12-27
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 2017-07-27
相关资源
最近更新 更多