CS1 Standard Demo Page

The following text was written to the standard output stream when the Number3 program was executed from Netbeans.

/*
 * Program to paint a rectangle, centered in the canvas, made up of randomly 
 * colored circles.
 */
package npw;

import java.awt.Color;
import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import painter.SPainter;
import shapes.SCircle;

/**
 *
 * @author dmaslows
 */
public class Number3 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Number3();
            }
        });
    }

    
public Number3() {
    paintTheImage();
}

private void paintTheImage() {
    int nrofrows = getNumber("rows");
    int nrofcolumns = getNumber("columns");
    int sizeofcircle = getNumber("circle diameter");
    int height = nrofrows * sizeofcircle;
    int width = nrofcolumns * sizeofcircle;
    SPainter miro = new SPainter("Number 3",width+300,height+300);
    miro.setBrushWidth(4);
    SCircle circle = new SCircle(sizeofcircle);
    paintRectangle(miro,circle,nrofrows,nrofcolumns);
}

private static int getNumber(String prompt) {
    String nss = JOptionPane.showInputDialog(null,prompt+"?");
    Scanner scanner = new Scanner(nss);
    return scanner.nextInt();
}

private static void paintRectangle(SPainter miro, SCircle circle, int nrofrows, int nrofcolumns) {
    miro.mlt(((nrofcolumns-1)/2.0)* circle.diameter());
    miro.mbk(((nrofrows-1)/2.0)* circle.diameter());
    int i = 1;
    while ( i <= nrofrows) {
        paintOneRow(miro,nrofcolumns,circle);
        miro.mfd(circle.diameter());
   
        i = i+1;
  
    }
    miro.mrt(((nrofcolumns-1)/2.0) * circle.diameter());
    miro.mfd(((nrofrows-1)/2.0) * circle.diameter());


}

private static void paintOneRow(SPainter miro, int nrofcolumns, SCircle circle){
    int i = 1;
    while ( i <= nrofcolumns) {
        paintOneCircle(miro,circle);
        miro.mrt(circle.diameter());
        
        i = i+1;

    }
    miro.mlt(nrofcolumns*circle.diameter());
   

}

private static void paintOneCircle(SPainter miro, SCircle circle) {
    miro.setColor(randomColor());
    circle.s2();
    miro.paint(circle);
    circle.x2();
}

private static Color randomColor() {
    Random rgen = new Random();
    int r = rgen.nextInt(256);
    int g = rgen.nextInt(256);
    int b = rgen.nextInt(256);  
    return new Color(r,b,g);
}
}