從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