import java.awt.event.MouseAdapter; import java.awt.event.MouseMotionListener; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.BevelBorder; public class EasyMove extends MouseAdapter implements MouseMotionListener { private Point offset; private Component host; public static void main(String[] args) { JFrame frm = new JFrame("EasyMove demo."); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.setSize(300, 300); frm.setUndecorated(true);// 影藏边框 frm.getRootPane().setBorder( BorderFactory.createBevelBorder(BevelBorder.RAISED)); new EasyMove().install(frm); JButton exit = new JButton("Exit"); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); frm.getContentPane().add(exit, BorderLayout.SOUTH); frm.setVisible(true); } public synchronized void install(Component comp) { uninstall(); host = comp; host.addMouseListener(this); host.addMouseMotionListener(this); } public synchronized void uninstall() { if (host != null) { host.removeMouseListener(this); host.removeMouseMotionListener(this); host = null; } } public void mousePressed(MouseEvent e) { if (e.getSource() == host) offset = e.getPoint(); } public void mouseDragged(MouseEvent e) { if (e.getSource() != host) return; final int x = host.getX(); final int y = host.getY(); final Point lastAt = e.getPoint(); host.setLocation(x + lastAt.x - offset.x, y + lastAt.y - offset.y); } public void mouseMoved(MouseEvent e) { } }
java swing:http://www.java2s.com/Code/Java/Swing-JFC/CatalogSwing-JFC.htm