我尝试了java.awt.event.MouseEvent
和鼠标按钮以及修饰键。最后,我来到了一个点,我对它的行为感到困惑。
通常我使用SwingUtilities.isLeftMouseButton(...)
等来检测,按下哪个鼠标按钮,<MouseEvent>.isControlDown()
等来检测,按下哪个修改键。
鼠标中键,无论是否按下 Alt 键,<MouseEvent>.isAltDown()
-方法似乎总是正确的(顺便说一下,鼠标右键和元键也是如此)。
似乎键盘上的某些键与某些鼠标按钮共享相同的事件标志。如何在java中获取鼠标中键?似乎证实了我的假设。
所以我的问题:有没有办法检测按下了哪个鼠标按钮以及真正按下了哪些修饰符?还是只对条件鼠标事件使用 Ctrl 和 Shift 修饰键更好?
操作系统:Windows 8,Java版本"1.7.0_09"
提前谢谢你
关于鼠标中键的问题... http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6495530,Sun/Oracle 似乎从 2006 年开始就知道这个问题......
对于其他情况(至少是简单的情况),我执行以下操作。
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON2){
//Do some stuff...
if (e.isControlDown()) {
//Do something if control is down
}else{
//Something different if it is not down.
}
}
}
alt(不适用于中间按钮,它总是正确的),shift和meta(这是OS X键吗?
我注意到如果你想处理双击和单独单击的奇怪行为,因为 Java 似乎支持双击,但也处理单击。