CS1 Standard Demo Page

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

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

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

/**
 *
 * @author ecuevas
 */
public class Number4 {

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

public Number4(){
    paintTheImage();
}
 
// The Solution To The Graphical Problem

private void paintTheImage(){
    // GRAB THE INPUT INFORMATION
    int nrOfRows = getNumber("rows");
    int nrOfColumns = getNumber("columns");
    int sizeOfCircle = getNumber("diameter side length");
    Color colorName = getColor();
    // ESTABLISH THE PAINTER
    int height = nrOfRows * sizeOfCircle;
    int width = nrOfColumns * sizeOfCircle;
    SPainter miro = new SPainter("Number 4",width+50,height+50);
    miro.setBrushWidth(4);
    SCircle dot = new SCircle(sizeOfCircle);
    // PAINT THE RECTANGLES
    paintRectangle(miro,dot,nrOfRows,nrOfColumns,colorName);
}
    private static int getNumber(String prompt) {
        String nss = JOptionPane.showInputDialog(null,prompt+"?");
        Scanner scanner = new Scanner(nss);
        return scanner.nextInt();  
    }
    
    private static Color getColor( ) {
        String command = JOptionPane.showInputDialog(null,"color?");
        Color color = Color.red;
        if(command.equalsIgnoreCase("red")) {
        
        } else if (command.equalsIgnoreCase("blue")) {
            color = Color.BLUE;
           
        } else if (command.equalsIgnoreCase("green")) {
            color = color.GREEN;
            
        } else {
            color = color.black;
            
        }
        return color; 
        
    }

    private static void paintRectangle(SPainter miro, SCircle dot, int nrOfRows,
    int nrOfColumns, Color color) {
        // POSITION THE PAINTER TO PAINT THE RECTANGLE OF SQUARES
        miro.mlt(((nrOfColumns-1)/2.0)*dot.diameter());
        miro.mbk(((nrOfRows-1)/2)*dot.diameter());
        // PAINT THE RECTANGLE OF SQUARES
        int i = 1;
        while (i <= nrOfRows){
            paintOneRow(miro,nrOfColumns,dot,color);
            miro.mfd(dot.diameter());
            i = i + 1;
        }
        // MAKE THE METHOD INVARIANT WITH RESPECT TO PAINTER POSITION
        miro.mrt(((nrOfColumns-1)/2.0)*dot.diameter());
        miro.mfd(((nrOfRows-1)/2.0)*dot.diameter());
    }

    private static void paintOneRow(SPainter miro, int nrOfColumns, SCircle dot, Color color) {
        int i = 1;
        while (i <= nrOfColumns ){
            paintOneCircle(miro,dot,color);
            miro.mrt(dot.diameter());
            i = i + 1;
        }
        miro.mlt(nrOfColumns*dot.diameter());
    }

    private static void paintOneCircle(SPainter miro, SCircle dot, Color color) {
        dot.s2();
        miro.setColor(color);
        miro.paint(dot);
        miro.draw(dot);
        dot.x2();
    }

    
    }