1 import java.awt.*;
2 import java.awt.event.*;
3 import java.awt.geom.*;
4 import javax.swing.*;
5 import java.util.*;
6
7 /**
8
9 */
10 public class CarComponent extends JComponent
11 {
12 public CarComponent()
13 {
14 car = new CarShape(20, 20, 50);
15 addMouseListener(new MousePressedListener());
16 addMouseMotionListener(new MouseDraggedListener());
17 }
18
19 private class MousePressedListener extends MouseAdapter
20 {
21 public void mousePressed(MouseEvent event)
22 {
23 mousePoint = event.getPoint();
24 if (!car.contains(mousePoint)) mousePoint = null;
25 }
26 }
27
28 private class MouseDraggedListener extends MouseMotionAdapter
29 {
30 public void mouseDragged(MouseEvent event)
31 {
32 if (mousePoint == null) return;
33 Point lastMousePoint = mousePoint;
34 mousePoint = event.getPoint();
35 double dx = mousePoint.getX() - lastMousePoint.getX();
36 double dy = mousePoint.getY() - lastMousePoint.getY();
37 car.translate((int) dx, (int) dy);
38 repaint();
39 }
40 }
41
42 public void paintComponent(Graphics g)
43 {
44 Graphics2D g2 = (Graphics2D) g;
45 car.draw(g2);
46 }
47
48 private CarShape car;
49 private Point mousePoint;
50 }