从Java网站:BUTTON1_MASK和BUTTON1_DOWN_MASK的区别是什么?
BUTTON1_DOWN_MASK = The Mouse Button1 extended modifier constant.
BUTTON1_MASK = The Mouse Button1 modifier constant.
我甚至不知道什么是“修饰符常量”是。更不用说扩展的了。 但我明白BUTTON1_MASK
只是点击鼠标左键的整数表示。
从Java网站:BUTTON1_MASK和BUTTON1_DOWN_MASK的区别是什么?
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
,which has some more useful comments, and shows what's happening inside
作为文档状态,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
有助于确定按下了哪个按钮。
这个答案很简洁。 – smwikipedia 2016-12-29 09:02:11
这是一个很长的时间,但任何人都读这个:为什么在你的代码中有单个&符号?即e.getModifiers()和MouseEvent.BUTTON1_MASK。这是代表一组交集? – user2316667 2013-08-31 22:31:26
@ user2316667,这是因为'getModifiers()'和[getModifiersEx()](http://docs.oracle.com/javase/7/docs/api/java/awt/event/InputEvent.html#getModifiersEx%28 %29)方法返回一个整数,它可以包含*组合*的标志。要测试整数中的任何**一个**特定标志,可以使用'&'运算符来查看该特定位是否非零(这是'!= 0'的来源)。所以,如果Button1位是你感兴趣的,你可以使用像e.getModifiers()&BUTTON1_MASK!= 0'这样的掩码来检查它。这不是布尔的&&操作符......这是不同的。 – Nate 2013-08-31 22:37:40
[有关更多信息,请参阅本教程](http://www.tutorialspoint.com/java/java_bitwise_operators_examples.htm),例如“按位与”运算符。 – Nate 2013-08-31 22:38:53