static A draggableFloatingComponent(final A a) { final new Var pt; addMouseListener(e, new MouseAdapter { public void mousePressed(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) pt.set(pt(a.getX()-e.getX(), a.getY()-e.getY())); } public void mouseReleased(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { a.setLocation(e.getX()+pt->x, e.getY()+pt->y); pt.set(null); } } }); addMouseMotionListener(e, new MouseMotionAdapter { public void mouseDragged(MouseEvent e) { a.setLocation(e.getX()+pt->x, e.getY()+pt->y); } }); ret a; }