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);
}
}