Java SDK를 기반으로 한 WorldWind 응용 프로그램 빌드가 있습니다. 그것은 당신이 객체를 클릭했을 때 탐지하기위한 훌륭한 이벤트 핸들러를 가지고 있지만, 나는 걸림돌을 만났습니다. 개별 개체를 클릭하여 선택할 수는 있지만 클릭하는 동안 컨트롤 키를 누른 경우 (여러 개체를 선택하려는 경우) 확인할 수 없습니다. 마우스와 키보드 모두를위한 이벤트 핸들러를 구현할 수는 있지만 두 가지를 묶는 방법을 이해할 수는 없습니다. 마우스 수신기가 현재 우울 키 목록을 시스템에 폴링하도록하려면 어떻게해야합니까?Java의 누른 버튼에 대한 설문 조사
1
A
답변
5
당신은 제어 키 (또는 키 이벤트 기간 동안 우울 된 시프트를하는지 getModifiers()와 비트를 비교하여 호출 할 수 있습니다.
public void mouseClicked(MouseEvent e) {
if((e.getModifiers() & ActionEvent.CTRL_MASK) > 0) {
// Control key depressed
}
}
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(..);
당신은 저를 실제 코드와 함께 저질렀습니다. +1 –