Recall that the JOptionPane.showMessageDialog calls
for an Icon argument.

showMessageDialog(..., new MarsIcon(50))
public void paintIcon(Component c, Graphics g, int x, int y)
{
Graphics2D g2 = (Graphics2D)g;
. . .
}
Shape s = . . .;
g2.draw(s);
See: Graphics2D tutorial

Point2D.Double start = new Point2D.Double(x1, y1);
Point2D.Double end = new Point2D.Double(x2, y2);
Shape segment = new Line2D.Double(start, end);
g2.draw(segment);


g2.fill(shape);

CarIcon.javaimport java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
/**
An icon that has the shape of a car.
*/
public class CarIcon implements Icon
{
/**
Constructs a car of a given width.
@param width the width of the car
*/
public CarIcon(int aWidth)
{
width = aWidth;
}
public int getIconWidth()
{
return width;
}
public int getIconHeight()
{
return width / 2;
}
public void paintIcon(Component c, Graphics g, int x, int y)
{
Graphics2D g2 = (Graphics2D) g;
Rectangle2D.Double body
= new Rectangle2D.Double(x, y + width / 6,
width - 1, width / 6);
Ellipse2D.Double frontTire
= new Ellipse2D.Double(x + width / 6, y + width / 3,
width / 6, width / 6);
Ellipse2D.Double rearTire
= new Ellipse2D.Double(x + width * 2 / 3, y + width / 3,
width / 6, width / 6);
// the bottom of the front windshield
Point2D.Double r1
= new Point2D.Double(x + width / 6, y + width / 6);
// the front of the roof
Point2D.Double r2
= new Point2D.Double(x + width / 3, y);
// the rear of the roof
Point2D.Double r3
= new Point2D.Double(x + width * 2 / 3, y);
// the bottom of the rear windshield
Point2D.Double r4
= new Point2D.Double(x + width * 5 / 6, y + width / 6);
Line2D.Double frontWindshield
= new Line2D.Double(r1, r2);
Line2D.Double roofTop
= new Line2D.Double(r2, r3);
Line2D.Double rearWindshield
= new Line2D.Double(r3, r4);
g2.fill(frontTire);
g2.fill(rearTire);
g2.setColor(Color.red);
g2.fill(body);
g2.draw(frontWindshield);
g2.draw(roofTop);
g2.draw(rearWindshield);
}
private int width;
public static void main(String[] args)
{
JOptionPane.showMessageDialog(
null,
"Hello, Car!",
"Message",
JOptionPane.INFORMATION_MESSAGE,
new CarIcon(100));
System.exit(0);
}
}
IconTest.javaimport javax.swing.*;
public class IconTest
{
public static void main(String[] args)
{
JOptionPane.showMessageDialog(
null,
"Hello, Car!",
"Message",
JOptionPane.INFORMATION_MESSAGE,
new CarIcon(100));
System.exit(0);
}
}
Maintained by John Loomis, updated Thu Feb 22 22:34:44 2007