// Demonstrates specialized canvas redrawing import java.awt.*; import javax.swing.*; public class FishCanvas extends Canvas { // instance variables Fish fish = new Fish(); // FishCanvas(): default constructor public FishCanvas() { // configure canvas attributes setSize(200, 200); setBackground(Color.blue); // position fish int fishWidth = (int) fish.getShape().getBounds().getWidth(); int fishHeight = (int) fish.getShape().getBounds().getHeight(); int w = getWidth(); int h = getHeight(); fish.setPosition((w - fishWidth)/2, (h - fishHeight)/2); } // paint(): draw the fish public void paint(Graphics g) { fish.paint(g); } // main(): application entry point public static void main(String[] args) { FishCanvas fishCanvas = new FishCanvas(); JFrame window = new JFrame("Canvas demo"); window.setSize(200, 200); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = window.getContentPane(); FlowLayout manager = new FlowLayout(); c.setLayout(manager); c.add(fishCanvas); window.setVisible(true); } }