2010-04-12 60 views
1

我有一個基於Java SDK的WorldWind應用程序構建。它有一個很棒的事件處理程序來檢測你什麼時候點擊對象,但我碰到了一個障礙。雖然我可以點擊並選擇單個對象,但我無法確定用戶是否在點擊時按下了控制鍵(如果他們想要選擇多個對象)。我可以爲鼠標和鍵盤實現事件處理程序,但是我無法想象如何將兩者結合在一起。我怎麼能讓我的鼠標監聽器輪詢系統當前被按下的鍵列表?在Java中按下按鈕的輪詢

回答

5

你可以叫getModifiers()和按位比較,看是否控制鍵(或Shift鍵,在活動期間鬱悶。

public void mouseClicked(MouseEvent e) { 
    if((e.getModifiers() & ActionEvent.CTRL_MASK) > 0) { 
    // Control key depressed 
    } 
} 
+0

你已經打了我,並與實際的代碼。 +1 – 2010-04-12 20:03:33

1

對於的MouseEvent,你可以只調用getModifiers()得到一個面具的修飾鍵(換檔/控制/ ALT等)按下的鍵。

對於一般情況下,使用一個變量,以配合在一起?

你keyhandler套/清除變量時它註冊一個按鍵,你的mouselistener檢查t帽子變量。

如果您需要更多地刪除這些內容,只需創建一個您的密鑰監聽器和mouselistener訪問的實例即可。

public class Pressedkeys { 
    private boolean shiftPressed = false; 
    private boolean controlPressed = false; 
    public void setShiftPressed(boolean pressed) { 
    this.shiftPressed = pressed; 
    } 
    public void setControlPressed (boolean pressed) { 
    this.shiftPressed = pressed; 
    } 
public boolean isControlPresed() { 
    return controlPressed ; 
    } 
    ... 
} 

Pressedkeys k = new PressedKeys(); 
MyMouseThing t = new MyMouseThing(k); 
//your mousething mouse handler would check k.isControlPressed(); 
MyKeyboardThing t = new MyKeyboardThing (k); 
//your KeyBoardThing - which has a key handler would set k.setControlPressed(..);