import java.awt.*;
import java.awt.geom.*;

public class StringArt {
  public static void main(String[] args) {
    Frame f = new ApplicationFrame("StringArt v1.0");
    javax.swing.JComponent c = new javax.swing.JComponent() {
      private int mNumberOfLines = 25;
      private Color[] mColors = { Color.red, Color.green, Color.blue };
      private Dimension pd = new Dimension(0, 0);

      public void paintComponent(Graphics g) {
        Dimension d = getSize();

        if (pd.width == d.width && pd.height == d.height) return;

        pd = d;

        Graphics2D g2 = (Graphics2D)g;


        System.out.println("Paint");

        g.clearRect(0, 0, d.width, d.height);

        for (int i = 0; i < mNumberOfLines; i++) {
          double ratio = (double)i / (double)mNumberOfLines;
          Line2D line = new Line2D.Double(0, ratio * d.height,
              ratio * d.width, d.height);
          g2.setPaint(mColors[i % mColors.length]);
          g2.draw(line);
        }

      }
    };
    c.setOpaque(true);
    c.setDoubleBuffered(true);
    f.add(c);
    f.setSize(200, 200);
    f.setVisible(true);
  }
}
