//: c12:Shapes.java // From 'Thinking in Java, 2nd ed.' by Bruce Eckel // www.BruceEckel.com. See copyright notice in CopyRight.txt. //:Shapes.java // // import java.util.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import com.bruceeckel.swing.*; import com.bruceeckel.util.*; public class Shapes extends JApplet { JTextArea Xout = new JTextArea(5, 20); public void init() { Container cp = getContentPane(); cp.setLayout(new FlowLayout()); cp.add(new JLabel("Shapes")); cp.add(new JScrollPane(Xout)); ArrayList s = new ArrayList(); s.add(new Circle()); s.add(new Square()); s.add(new Triangle()); Iterator e = s.iterator(); while(e.hasNext()) ((XShape)e.next()).draw(); } class XShape { void draw() { Xout.append(this + " Generic Draw\n"); } } class Circle extends XShape { public String toString() { return "Circle"; } void draw() { Xout.append("Circle Specfic Draw\n"); } } class Square extends XShape { public String toString() { return "Square"; } } class Triangle extends XShape { public String toString() { return "Triangle"; } } public static void main(String[] args) { Console.run(new Shapes(), 250, 150); } } ///:~