Java tutorial
import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends JPanel { public void paintComponent(Graphics g) { g.setColor(Color.black); g.fillRect(0, 0, getWidth(), getHeight()); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setPreferredSize(new Dimension(300, 280)); Main ch = new Main(); frame.getContentPane().add(ch); frame.setUndecorated(true); MoveMouseListener mml = new MoveMouseListener(ch); ch.addMouseListener(mml); ch.addMouseMotionListener(mml); frame.pack(); frame.setVisible(true); } } class MoveMouseListener implements MouseListener, MouseMotionListener { JComponent target; Point start_drag; Point start_loc; public MoveMouseListener(JComponent target) { this.target = target; } public static JFrame getFrame(Container target) { if (target instanceof JFrame) { return (JFrame) target; } return getFrame(target.getParent()); } Point getScreenLocation(MouseEvent e) { Point cursor = e.getPoint(); Point target_location = this.target.getLocationOnScreen(); return new Point((int) (target_location.getX() + cursor.getX()), (int) (target_location.getY() + cursor.getY())); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { this.start_drag = this.getScreenLocation(e); this.start_loc = this.getFrame(this.target).getLocation(); } public void mouseReleased(MouseEvent e) { } public void mouseDragged(MouseEvent e) { Point current = this.getScreenLocation(e); Point offset = new Point((int) current.getX() - (int) start_drag.getX(), (int) current.getY() - (int) start_drag.getY()); JFrame frame = this.getFrame(target); Point new_location = new Point((int) (this.start_loc.getX() + offset.getX()), (int) (this.start_loc.getY() + offset.getY())); frame.setLocation(new_location); } public void mouseMoved(MouseEvent e) { } }