Search code examples
javaswing

How can I capture all mouse events in a JFrame/Swing?


I have a JFrame that has a large number of changing child components. (Many layers) Is there any way to add a listener for all mouse events? Something like KeyEventDispatcher?


Solution

  • Use an AWTEventListener to filter out the MouseEvents:

    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);
    

    Check out Global Event Listeners for more information.