// f : voidfunc(Pt) - point can be null, then mouse has exited static A callFunctionOnMouseMove(final A c, final O f) { if (c != null && f != null) swing { MouseAdapter ma = new MouseAdapter { public void mouseMoved(MouseEvent e) { pcallF(f, is.pointFromEvent(e)); } public void mouseEntered(MouseEvent e) { pcallF(f, is.pointFromEvent(e)); } public void mouseExited(MouseEvent e) { pcallF(f, (Pt) null); } }; c.addMouseMotionListener(ma); c.addMouseListener(ma); } ret c; }