Timeout2

File: java/Timeout2/MyCanvas.java

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

public class MyCanvas extends JComponent {
    /**
     * Our basic shape, in canonical orientation, centered at 0, 0
     */
    private Rectangle2D rect = new Rectangle2D.Double (-25, -25, 50, 50);

    private Main parent;

    public MyCanvas (Main parent) {
	this.parent = parent;
    }

    public void paintComponent (Graphics g) {
	Graphics2D g2 = (Graphics2D) g;
	AffineTransform rot = new AffineTransform ();
	AffineTransform trans = new AffineTransform ();
	int nboxes = parent.getFrame();

	for (int ibox=0; ibox<nboxes; ibox++) {
	    // First rotate about its center
	    rot.setToRotation (ibox/10.);
	    // Then move it somewhere
	    trans.setToTranslation (100+2*ibox, 100+2*ibox);
	    // Make a composite transform that does both jobs
	    trans.concatenate (rot);
	    // and apply it
	    Shape s = trans.createTransformedShape (rect);

	    g2.draw (s);
	}
    }
}