2010-04-12 10 views
1

Java SDK를 기반으로 한 WorldWind 응용 프로그램 빌드가 있습니다. 그것은 당신이 객체를 클릭했을 때 탐지하기위한 훌륭한 이벤트 핸들러를 가지고 있지만, 나는 걸림돌을 만났습니다. 개별 개체를 클릭하여 선택할 수는 있지만 클릭하는 동안 컨트롤 키를 누른 경우 (여러 개체를 선택하려는 경우) 확인할 수 없습니다. 마우스와 키보드 모두를위한 이벤트 핸들러를 구현할 수는 있지만 두 가지를 묶는 방법을 이해할 수는 없습니다. 마우스 수신기가 현재 우울 키 목록을 시스템에 폴링하도록하려면 어떻게해야합니까?Java의 누른 버튼에 대한 설문 조사

답변

5

당신은 제어 키 (또는 키 이벤트 기간 동안 우울 된 시프트를하는지 getModifiers()와 비트를 비교하여 호출 할 수 있습니다.

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

당신은 저를 실제 코드와 함께 저질렀습니다. +1 –

1

을로, MouseEvent를 들어, 당신은 단지 마스크를 얻기 위해 getModifiers()를 호출 할 수 있습니다 가압 보조 키 (시프트/제어/ALT 등) 개의 키. 일반적인 경우에 대해

들을 함께 묶어 변수를 사용합니까?

내 키 핸들러 세트/변수를 클리어 그것의 키를 등록 할 때 , 당신의 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(..); 
관련 문제