[英]Determine wether the middle mouse button is pressed but not the alt key
我嘗試了java.awt.event.MouseEvent
和鼠標按鈕以及修飾鍵。 最終我到了一個地步,被它的行為所迷惑。
通常我使用SwingUtilities.isLeftMouseButton(...)
等來檢測按下哪個鼠標按鈕,並使用<MouseEvent>.isControlDown()
等來檢測按下哪個修改鍵。
但是,如果我按下鼠標中鍵,則無論是否按下Alt鍵, <MouseEvent>.isAltDown()
-方法似乎總是正確的(通過鼠標右鍵和meta鍵的方式)。
似乎鍵盤上的某些鍵與某些鼠標按鈕共享相同的事件標志。 如何在Java中獲取鼠標中鍵? 似乎證實了我的假設。
所以我的問題是:有沒有辦法檢測按下哪個鼠標按鈕以及真正按下哪個修飾符? 還是僅對條件鼠標事件使用Ctrl和Shift修飾鍵?
作業系統:Windows 8,Java版本“ 1.7.0_09”
先感謝您
關於您的鼠標中鍵問題... http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6495530 ,似乎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似乎可以接受雙擊,但也可以處理單擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.