import java.awt.*; /** The Icon class is an abstract class which defines the fields, methods and behavior common to all icons. */ abstract public class Icon { static public final int defaultRadius = 5; static public final Color defaultColor = Color.black; protected int iconRadius; protected Color iconColor; public Icon() { iconRadius = defaultRadius; iconColor = defaultColor; } public void setRadius(int r) { iconRadius = r; } public void setColor(Color c) { iconColor = c; } abstract public void draw(Graphics g, int x, int y); public String toString() { String s; s = "iconRadius: " + iconRadius + "\n"; s += "iconColor: " + iconColor + "\n"; return s; } } /** The SquareIcon class */ public class SquareIcon extends Icon{ public SquareIcon() { } public SquareIcon(int r) { iconRadius = r; } public SquareIcon(Color c) { iconColor = c; } public SquareIcon(int r, Color c) { iconRadius = r; iconColor = c; } public void draw(Graphics g, int x, int y) { g.setColor(iconColor); g.drawRect(x - iconRadius, y - iconRadius, 2*iconRadius, 2*iconRadius); } public String toString() { return "Square Icon\n" + super.toString(); } } /** The XIcon class */ public class XIcon extends Icon{ public XIcon() { } public XIcon(int r) { iconRadius = r; } public XIcon(Color c) { iconColor = c; } public XIcon(int r, Color c) { iconRadius = r; iconColor = c; } public void draw(Graphics g, int x, int y) { g.setColor(iconColor); g.drawLine(x - iconRadius, y - iconRadius, x + iconRadius, y + iconRadius); g.drawLine(x - iconRadius, y + iconRadius, x + iconRadius, y - iconRadius); } public String toString() { return "X Icon\n" + super.toString(); } } /** The CrossIcon class */ public class CrossIcon extends Icon{ public CrossIcon() { } public CrossIcon(int r) { iconRadius = r; } public CrossIcon(Color c) { iconColor = c; } public CrossIcon(int r, Color c) { iconRadius = r; iconColor = c; } public void draw(Graphics g, int x, int y) { g.setColor(iconColor); g.drawLine(x - iconRadius, y, x + iconRadius, y); g.drawLine(x, y - iconRadius, x, y + iconRadius); } public String toString() { return "Cross Icon\n" + super.toString(); } }