从java网站:
BUTTON1_DOWN_MASK = The Mouse Button1 extended modifier constant.
BUTTON1_MASK = The Mouse Button1 modifier constant.
我什至不确定什么是“修饰符常数”。更不用说扩展了。但是,我确实理解这BUTTON1_MASK
只是单击鼠标左键时的整数表示。
BUTTON1_MASK
是表示事件来自按钮 1 的掩码。 BUTTON1_DOWN_MASK
在概念上相似,但是是该常量的扩展版本。
有两种方法可以返回这样的常量集:InputEvent#getModifiers()
和InputEvent#getModifiersEx()
,它们将分别返回修饰符常量或扩展修饰符常量。
InputEvent.getModifiers() 返回的按钮掩码仅反映更改状态的按钮,而不是所有按钮的当前状态...要获取所有按钮和修饰键的状态,请使用 InputEvent.getModifiersEx()。
扩展修饰符表示事件发生后所有模态键的状态,例如 ALT、CTRL、META 和鼠标按钮
例如,如果用户按下按钮 1,然后按下按钮 2,然后以相同的顺序释放它们,则会生成以下事件序列:
MOUSE_PRESSED: BUTTON1_DOWN_MASK MOUSE_PRESSED: BUTTON1_DOWN_MASK | BUTTON2_DOWN_MASK MOUSE_RELEASED: BUTTON2_DOWN_MASK MOUSE_CLICKED: BUTTON2_DOWN_MASK MOUSE_RELEASED: MOUSE_CLICKED:
如果您只想检测按钮 1(通常是左键)单击,那么这些中的任何一个都应该起作用:
if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {
System.out.println("BUTTON1_MASK");
}
if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
System.out.println("BUTTON1_DOWN_MASK");
}
另外,你可以查看这个开源版本InputEvent
,它有一些更有用的评论,并显示了里面发生了什么
正如文档所述,BUTTON1_MASK
并且BUTTON1_DOWN_MASK
是修饰符常量,即它们与MouseEvent#getModifiers
. 它们没有被扩展,而是用作掩码值,例如
@Override
public void mousePressed(MouseEvent me) {
if ((me.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
System.out.println("Left button pressed.");
}
}
BUTTON1_DOWN_MASK
用于检测鼠标按钮的状态,而BUTTON1_MASK
简单地帮助确定按下了哪个按钮。