많은 하위 구성 요소가 변경되는 JFrame이 있습니다. (많은 레이어) 모든 마우스 이벤트에 리스너를 추가 할 수있는 방법이 있습니까? KeyEventDispatcher와 같은 것?JFrame/Swing에서 모든 마우스 이벤트를 캡처하는 방법은 무엇입니까?
답변
는 MouseEvent는을 필터링하는의 AWTEventListener를 사용
long eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK;
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()
{
public void eventDispatched(AWTEvent e)
{
System.out.println(e);
}
}, eventMask);
서명되지 않은 애플릿에서는 허용되지 않습니다. – lexicalscope
마우스 관련 인터페이스
의 MouseListener 된 MouseMotionListener MouseWheelListener를
계층 구조의 단일 구성 요소 만 마우스 이벤트를 게시하기 때문에 이것은 작동하지 않습니다. 따라서 계층 구조의 모든 구성 요소에 마우스 수신기를 등록해야합니다. –
당신은이 될 것이다 클래스의 모든 마우스 관련 리스너를 구현하고, 모든 마우스 관련 이벤트에 대한 핸들러로 클래스를 등록 JFrame의 유리판을 사용하는 방법 : http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html#getGlassPane()
그냥 유리창을 가져옵니다. frm.getGlassPane()을 사용하여 JFrame을 열고 addMouseListener()를 사용하여 창 내부의 모든 마우스 이벤트를 캡처합니다.
MouseAdapter
의 하위 클래스를 구현할 수도 있습니다.이 하위 클래스는 Mouse*Listener
인터페이스에 정의 된 모든 메소드의 빈 구현을 제공하는 추상 클래스입니다. 일단 그렇게하면 자녀 구성 요소를 만들 때 MouseListener
으로 자녀 구성 요소에 등록 할 수 있습니다. 구성 요소가 '변경 중'임을 나타내 므로 JFrame의 수명주기 동안 구성 요소를 릴리스하려는 경우 청취자를 등록 취소해야합니다.
당신은 [SwingUtilities.getDeepestComponentAt()] [3] 실제 성분을 취득하고 [SwingUtilities.convertMouseEvent를 (사용 후 가능한 모든 마우스 이벤트를 잡아 그것에 MouseInputAdapter를 추가, 전체 JFrame의를 통해 GlassPane을 추가 할 수)] [4] 마우스 이벤트를 유리 창에서 실제 구성 요소로 위임합니다.
그러나 키의 누를 때마다 이벤트를 발생시키는 KeyEventDispatcher와 달리 사용자가 마우스를 움직일 때 여러 이벤트가 생성되므로 KeyEventDispatcher와 달리 이벤트를 처리하기 위해 하위 구성 요소로 이벤트를 다시 보내야합니다.
(미안 - 유래 올바르게 SwingUtilities의 방법에 대한 링크를 운반되지 ... 링크보다는 텍스트보다 아래에 도시된다.)
[3] : http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/SwingUtilities.html#getDeepestComponentAt(java.awt.Component, INT, INT) [4 ] : http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/SwingUtilities.html#convertMouseEvent(java.awt.Component는 java.awt.event.MouseEvent의, java.awt.Component의)
- 1. 컨트롤에 모든 마우스 이벤트를 트래핑하는 방법은 무엇입니까?
- 2. JavaScript에서 마우스 오른쪽 버튼 클릭 이벤트를 캡처하는 방법은 무엇입니까?
- 3. ListView에서 이벤트를 캡처하는 방법은 무엇입니까?
- 4. 키보드 이벤트를 캡처하는 방법은 무엇입니까?
- 5. PyQt의 Qt 위젯에서 유래 된 위젯에서 모든 마우스 이벤트를 캡처하는 방법은 무엇입니까?
- 6. 서비스 내부의 주요 이벤트를 캡처하는 방법은 무엇입니까?
- 7. 패널에서 마우스 휠을 캡처하는 방법은 무엇입니까?
- 8. 화면 캡처에서 마우스 커서를 캡처하는 방법은 무엇입니까?
- 9. X11에서 생 마우스 입력을 캡처하는 방법은 무엇입니까?
- 10. UI에서 SharePoint 이벤트를 캡처하는 방법은 무엇입니까?
- 11. ArcMap 컨트롤에서 OnMouseDown 이벤트를 캡처하는 방법은 무엇입니까?
- 12. jqGrid 열 변경 이벤트를 캡처하는 방법은 무엇입니까?
- 13. 체크 박스 클릭 이벤트를 캡처하는 방법은 무엇입니까?
- 14. 오른쪽 클릭 컨텍스트 메뉴에서 붙여 넣기 이벤트를 캡처하는 방법은 무엇입니까?
- 15. iframe에서 다른 iframe으로 모든 이벤트를 캡처하는 방법
- 16. 새 프로세스 (응용 프로그램!)가 시작되면 이벤트를 캡처하는 방법은 무엇입니까?
- 17. onclick에서 마우스 오버 이벤트를 비활성화하는 방법은 무엇입니까?
- 18. getMouse()를 사용하여 마우스 오른쪽 버튼 이벤트를 캡처하는 방법
- 19. wxpython 모든 패널에 마우스 이벤트를 바인딩 하시겠습니까?
- 20. NSTextView에서 주요 이벤트를 캡처하는 가장 좋은 방법은 무엇입니까?
- 21. MFC : 웹 브라우저 컨트롤에서 링크 클릭 이벤트를 캡처하는 방법은 무엇입니까?
- 22. iframe 내부의 요소가 키 이벤트를 캡처하는 방법은 무엇입니까?
- 23. 첨부 파일 응답이있는 창의 onload 이벤트를 캡처하는 방법은 무엇입니까?
- 24. 별도의 실행중인 프로세스에서 양식 이벤트를 캡처하는 방법
- 25. 모든 jquery ajax 이벤트를 차단하는 방법은 무엇입니까?
- 26. Jquery : 모든 페이지에 이벤트를 등록하는 방법은 무엇입니까?
- 27. X에서 키를 캡처하는 방법은 무엇입니까?
- 28. Quartz 이벤트를 사용하여 마우스 클릭을 처리하는 방법은 무엇입니까?
- 29. Google지도로 페이지를 캡처하는 방법은 무엇입니까?
- 30. Qt에서 마우스 및 키보드 이벤트를 무시합니다.
왜 커뮤니티 위키는? – akf