正如意見和其他的答案中指出,SwingUtilities類提供了這樣的情況下三種方法,這應該爲所有MouseEvents工作:
SwingUtilities.isLeftMouseButton(aMouseEvent);
SwingUtilities.isRightMouseButton(aMouseEvent);
SwingUtilities.isMiddleMouseButton(aMouseEvent);
至於什麼問題,你的做法是,中getButton()
的Javadoc說:
返回哪裏,如果有的話,鼠標按鈕已改變狀態。
由於按鈕被同時向下不會改變的狀態,getButton()
通常會在mouseDragged
返回NO_BUTTON
。要檢查按鈕和修改器的狀態,如Ctrl,替代等在mouseDragged
中,可以使用getModifiersEx()
。作爲一個例子,下面的代碼將檢查BUTTON1
是下降,但BUTTON2
是不是:
int b1 = MouseEvent.BUTTON1_DOWN_MASK;
int b2 = MouseEvent.BUTTON2_DOWN_MASK;
if ((e.getModifiersEx() & (b1 | b2)) == b1) {
// ...
}
你可以用鼠標右鍵拖動,我只用鼠標左鍵拖動 – DevZer0
我測試了兩個按鈕,並且兩個按鈕都發送了0。 –