문제

JFrame에서 마우스 이벤트 (특히 마우스가 입력 및 종료 된 이벤트)에 대해 알리고 싶습니다. 그러나 mouselistener를 추가하면 내용이 포함 된 전체 프레임이 아닌 프레임의 경계에 이벤트를 얻습니다.

이유에 대한 아이디어가 있습니까?

편집 : 아니면 적어도 대안이 있습니까? JFrame에서 마우스 이벤트를 잡을 수있는 "Gloabal"방법을 원합니다. 어쩌면 Mouselistener가 답이 아닐 수도 있습니다.

도움이 되었습니까?

해결책

모든 이벤트를 얻고 소스가 JFrame의 구성 요소인지 확인할 수 있습니다.

보다 툴킷 .addawteventListener

다른 팁

전체 GUI 인 "유리창"을 오버레이하는 보이지 않는 구성 요소가 있습니다. 청취자를 첨부 할 수 있습니다. 예시:

JFrame frame = new JFrame();
Component glassPane = frame.getGlassPane();
glassPane.addMouseListener(myListener);

차단 된 이벤트가 기본 구성 요소로 전달되기를 원한다면 이벤트를 다시 만들 수 있습니다. 예를 들어:

public void mouseMoved(MouseEvent e) {
    redispatchMouseEvent(e, false);
}

내용 (아마도 jpanel)이 "섀도 잉"하고 이벤트를 소비하고 JFrame에 도달하지 않기 때문입니다.

당신이 할 수있는 일은 모든 아이들에게 동일한 청취자를 추가하는 것입니다. 그래도 더 나은 방법이 있어야합니다.

대안 AWTEventListener 밀어 넣는 것입니다 EventQueue. 이는 애플릿과 웹 스타트 응용 프로그램이이를 수행 할 수있는 이점이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top