import javax.swing.*; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.*; import java.awt.Rectangle; import java.awt.Color; public class Snowman implements Icon { private int height; private Color []colors={Color.BLUE, Color.RED, Color.GREEN}; private int nextColorIndex; public Snowman(int height) { this.height = height; nextColorIndex = 0; } public int getIconWidth() { return (int)((height+1)/2.0); } public int getIconHeight() { return height; } public void paintIcon(Component c, Graphics g, int x, int y) { System.out.println("painting a snowman"); Graphics2D g2 = (Graphics2D)g; double oneSixth = height/6.0; Ellipse2D.Double head = new Ellipse2D.Double(x, y, oneSixth, oneSixth); g2.setColor(colors[nextColorIndex]); g2.fill(head); Ellipse2D.Double middle = new Ellipse2D.Double(x, y+oneSixth, 2*oneSixth, 2*oneSixth); g2.fill(middle); Ellipse2D.Double bottom = new Ellipse2D.Double(x, y+3*oneSixth, 3*oneSixth, 3*oneSixth); g2.fill(bottom); Rectangle snowmanBox = new Rectangle(x, y, getIconWidth(), height); g2.draw(snowmanBox); //update next color index nextColorIndex++; nextColorIndex%=colors.length; } }