When launching the simplest window, for some reason the mouseMoved event is not fired, although next to exactly the same condition, exactly the same mousePressed and everything is output.

 class MainWindow extends JFrame { public MainWindow() { setSize(300, 300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addMouseListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { int x = e.getX(); int y = e.getY(); System.out.println("Coords moved: X- " + x + ", Y - " + y); } @Override public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); System.out.println("Coords: X- " + x + ", Y - " + y); } }); } } 

    1 answer 1

    JFrame has 3 mouse listeners:

     addMouseListener(MouseListener l) addMouseMotionListener(MouseMotionListener l); addMouseWheelListener(MouseWheelListener l) 

    The MouseAdapter adapter implements all 3 of these interfaces, the mouseMoved(MouseEvent e) method mouseMoved(MouseEvent e) refers to MouseMotionListener but you assign it to only one addMouseListener event, so try this:

     class MainWindow extends JFrame { public MainWindow() { setSize(300, 300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MouseAdapter mouseAdapter = new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { int x = e.getX(); int y = e.getY(); System.out.println("Coords moved: X- " + x + ", Y - " + y); } @Override public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); System.out.println("Coords: X- " + x + ", Y - " + y); } }; addMouseListener(mouseAdapter); addMouseMotionListener(mouseAdapter); } }