簡體   English   中英

確定是否按下了鼠標中鍵而不是Alt鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM