01: import java.awt.*;
02: import java.awt.event.*;
03: import java.awt.geom.*;
04: import javax.swing.*;
05: import java.util.*;
06: 
07: /**
08:    A panel that shows a scene composed of items.
09: */
10: public class CarPanel extends JPanel
11: {
12:    public CarPanel()
13:    {
14:       car = new CarShape(20, 20, 50);
15:       addMouseListener(new
16:          MouseAdapter()
17:          {
18:             public void mousePressed(MouseEvent event)
19:             {
20:                mousePoint = event.getPoint();
21:                if (!car.contains(mousePoint))
22:                   mousePoint = null;
23:             }
24:          });
25: 
26:       addMouseMotionListener(new
27:          MouseMotionAdapter()
28:          {
29:             public void mouseDragged(MouseEvent event)
30:             {
31:                if (mousePoint == null) return;
32:                Point lastMousePoint = mousePoint;
33:                mousePoint = event.getPoint();
34: 
35:                car.translate(
36:                   mousePoint.getX() - lastMousePoint.getX(),
37:                   mousePoint.getY() - lastMousePoint.getY());
38:                repaint();
39:             }
40:          });
41:    }
42: 
43:    public void paintComponent(Graphics g)
44:    {
45:       super.paintComponent(g);
46:       Graphics2D g2 = (Graphics2D) g;
47:       car.draw(g2);
48:    }
49: 
50:    private CarShape car;
51:    private Point mousePoint;
52: }