import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class TestComponent extends JComponent
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(0,0,getWidth(),getHeight());
}
}
class ComponentDragTest extends JFrame
{
public static void main(String args[])
{
new ComponentDragTest().setVisible(true);
}
private Point lastPosition = null;
public ComponentDragTest()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,400);
JPanel contentPane = new JPanel();
contentPane.setLayout(null);
setContentPane(contentPane);
final TestComponent c = new TestComponent();
contentPane.add(c);
c.setBounds(100,100,100,100);
contentPane.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
lastPosition = e.getPoint();
}
});
contentPane.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
int dx = e.getX() - lastPosition.x;
int dy = e.getY() - lastPosition.y;
c.setLocation(c.getX()+dx, c.getY()+dy);
lastPosition = e.getPoint();
}
public void mouseMoved(MouseEvent e)
{
lastPosition = e.getPoint();
}
});
}
}