Java - 我们可以在不使用监听器的情况下检测是否按下了某个键吗?

Dad*_*dyB 6 java keyboard key pressed

我需要能够检测在我的特定操作期间是否按下某个键(例如CTRL).我无权访问密钥监听器,也无法访问鼠标事件.我希望有一些类有一个类似"boolean isKeyPressed(keycode)"的方法.

有没有人在java中意识到这样的方法?

对于一些背景知识,我试图覆盖组件的默认拖放行为.默认情况下,根据DropTargetDragEvent的javadocs ,如果没有按下任何键修饰符,则它会在组件的支持操作列表中查找移动,然后查找副本,然后查找链接并在找到第一个后停止.

在我的应用程序中,我们支持复制和链接.根据javadoc,没有按下CTRL键,默认操作是复制.我们希望用户能够指定默认操作(允许他们设置最常用的操作),然后使用修改键强制使用特定操作.

如果我可以检测到按键状态,那么我可以强制执行此操作,但我看不到任何其他方式更改默认操作.

布莱恩,提前谢谢

Eri*_*son 5

MouseEvent.getModifiers()方法将返回在MouseEvent生成时按下的修改键的位图.或者,您可以使用MouseEvent.isControlDown()特定的CTRL键进行检查.


Jer*_*erg 0

即使有这样的方法,你想用它做什么?无限循环地调用它,希望它在某个时刻返回 true?我认为基于事件/基于侦听器的机制更适合这种情况。