1 import java.awt.*;
2 import java.awt.geom.*;
3 import javax.swing.*;
4
5 /**
6
7 */
8 public class CarIcon implements Icon
9 {
10 /**
11
12 @param width
13 */
14 public CarIcon(int aWidth)
15 {
16 width = aWidth;
17 }
18
19 public int getIconWidth()
20 {
21 return width;
22 }
23
24 public int getIconHeight()
25 {
26 return width / 2;
27 }
28
29 public void paintIcon(Component c, Graphics g, int x, int y)
30 {
31 Graphics2D g2 = (Graphics2D) g;
32 Rectangle2D.Double body
33 = new Rectangle2D.Double(x, y + width / 6,
34 width - 1, width / 6);
35 Ellipse2D.Double frontTire
36 = new Ellipse2D.Double(x + width / 6, y + width / 3,
37 width / 6, width / 6);
38 Ellipse2D.Double rearTire
39 = new Ellipse2D.Double(x + width * 2 / 3, y + width / 3,
40 width / 6, width / 6);
41
42 //
43 Point2D.Double r1
44 = new Point2D.Double(x + width / 6, y + width / 6);
45 //
46 Point2D.Double r2
47 = new Point2D.Double(x + width / 3, y);
48 //
49 Point2D.Double r3
50 = new Point2D.Double(x + width * 2 / 3, y);
51 //
52 Point2D.Double r4
53 = new Point2D.Double(x + width * 5 / 6, y + width / 6);
54
55 Line2D.Double frontWindshield
56 = new Line2D.Double(r1, r2);
57 Line2D.Double roofTop
58 = new Line2D.Double(r2, r3);
59 Line2D.Double rearWindshield
60 = new Line2D.Double(r3, r4);
61
62 g2.fill(frontTire);
63 g2.fill(rearTire);
64 g2.setColor(Color.red);
65 g2.fill(body);
66 g2.draw(frontWindshield);
67 g2.draw(roofTop);
68 g2.draw(rearWindshield);
69 }
70
71 private int width;
72 }
73
74