Java 确定是否按下了鼠标中键,而不是alt键

Java 确定是否按下了鼠标中键,而不是alt键,java,mouseevent,modifier,alt-key,Java,Mouseevent,Modifier,Alt Key,我尝试了java.awt.event.MouseEvent和鼠标按钮以及修改键。最后我到了一个地步,我被它的行为弄糊涂了 通常我使用SwingUtilities.isLeftMouseButton。。。等来检测,哪个鼠标按钮被按下,.isControl等来检测,哪个修改键被按下 但是,如果我按下鼠标中键,.isAltDown方法似乎总是正确的,无论是否按下Alt键,方法与鼠标右键和meta键相同 似乎键盘上的某些键与某些鼠标按钮共享相同的事件标志。 似乎证实了我的假设 所以我的问题是:有没有一种

我尝试了java.awt.event.MouseEvent和鼠标按钮以及修改键。最后我到了一个地步,我被它的行为弄糊涂了

通常我使用SwingUtilities.isLeftMouseButton。。。等来检测,哪个鼠标按钮被按下,.isControl等来检测,哪个修改键被按下

但是,如果我按下鼠标中键,.isAltDown方法似乎总是正确的,无论是否按下Alt键,方法与鼠标右键和meta键相同

似乎键盘上的某些键与某些鼠标按钮共享相同的事件标志。 似乎证实了我的假设

所以我的问题是:有没有一种方法可以检测出哪个鼠标按钮被按下,哪些修改器被真正按下?还是只对条件鼠标事件使用Ctrl和Shift修改键更好

操作系统:Windows 8,java版本1.7.0_09


提前感谢您

关于鼠标中键的问题,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有一个类似的助手,它不使用中间按钮,它总是true,shift和meta是OS X键


我注意到,如果您想处理双击和单独单击,则会出现奇怪的行为,因为Java似乎支持双击,但也可以处理单次单击。

顺便说一句,在UNIX系统上,Alt键有一些特殊的bevavior,因此在没有Ctrl或Shift作为修改键的情况下,不应该使用它。