2009-07-27 3 views

답변

18

는 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); 
+1

서명되지 않은 애플릿에서는 허용되지 않습니다. – lexicalscope

0

마우스 관련 인터페이스

의 MouseListener 된 MouseMotionListener MouseWheelListener를

+1

계층 구조의 단일 구성 요소 만 마우스 이벤트를 게시하기 때문에 이것은 작동하지 않습니다. 따라서 계층 구조의 모든 구성 요소에 마우스 수신기를 등록해야합니다. –

2

당신은이 될 것이다 클래스의 모든 마우스 관련 리스너를 구현하고, 모든 마우스 관련 이벤트에 대한 핸들러로 클래스를 등록 JFrame의 유리판을 사용하는 방법 : http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html#getGlassPane()

그냥 유리창을 가져옵니다. frm.getGlassPane()을 사용하여 JFrame을 열고 addMouseListener()를 사용하여 창 내부의 모든 마우스 이벤트를 캡처합니다.

0

MouseAdapter의 하위 클래스를 구현할 수도 있습니다.이 하위 클래스는 Mouse*Listener 인터페이스에 정의 된 모든 메소드의 빈 구현을 제공하는 추상 클래스입니다. 일단 그렇게하면 자녀 구성 요소를 만들 때 MouseListener으로 자녀 구성 요소에 등록 할 수 있습니다. 구성 요소가 '변경 중'임을 나타내 므로 JFrame의 수명주기 동안 구성 요소를 릴리스하려는 경우 청취자를 등록 취소해야합니다.

+0

MouseInputAdapter - MouseAdapter는, MouseListener (클릭, 동작 없음 또는 스크롤 휠 없음)의 구현 일뿐입니다. – Nate

+0

네이트, 답장을 보내 주셔서 감사합니다. 코드를 살펴보면 MouseAdapter가 세 인터페이스를 모두 구현한다는 것을 알 수 있습니다. – akf

7

당신은 [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의)

관련 문제