/home/jfernan6/NetBeansProjects/CSX/src/npw/Number2.java |
1
2
3
4
5 package npw;
6 import java.awt.Color;
7 import java.util.Random;
8 import java.util.Scanner;
9 import javax.swing.JOptionPane;
10 import javax.swing.SwingUtilities;
11 import painter.SPainter;
12 import shapes.SSquare;
13
14
15 @author
16
17 public class Number2 {
18
19
20 @param args
21
22 public static void main(String[] args) {
23 SwingUtilities.invokeLater(new Runnable() {
24 public void run() {
25 new Number2();
26 }
27 });
28 }
29
30 public Number2() {
31 paintTheImage();
32 }
33
34
35
36 private void paintTheImage() {
37
38 int nrOfRows = getNumber("rows");
39 int nrOfColumns = getNumber("columns");
40 int sizeOfSquare = getNumber("square side length");
41
42 int height = nrOfRows * sizeOfSquare;
43 int width = nrOfColumns * sizeOfSquare;
44 SPainter miro = new SPainter("Number 2",width+50,height+50);
45 miro.setBrushWidth(4);
46 SSquare square = new SSquare(sizeOfSquare);
47
48 paintRectangle(miro,square,nrOfRows,nrOfColumns);
49 }
50 private static int getNumber(String prompt) {
51 String nss = JOptionPane.showInputDialog(null,prompt+"?");
52 Scanner scanner = new Scanner(nss);
53 return scanner.nextInt();
54 }
55 private static void paintRectangle(SPainter miro, SSquare square,
56 int nrOfRows, int nrOfColumns) {
57
58 miro.mlt(((nrOfColumns-1)/2.0) * square.side());
59 miro.mbk(((nrOfRows-1)/2.0) * square.side());
60
61 int i = 1;
62 while ( i <= nrOfRows) {
63 paintOneRow(miro,nrOfColumns,square);
64 miro.mfd(square.side());
65 i=i+1;
66 }
67
68 miro.mrt(((nrOfColumns-1)/2.0) * square.side());
69 miro.mfd(((nrOfRows-1)/2.0) * square.side());
70 }
71
72 private static void paintOneRow(SPainter miro, int nrOfColumns, SSquare square) {
73 int i = 1;
74 while ( i <= nrOfColumns ) {
75 paintOneSquare(miro,square);
76 miro.mrt(square.side());
77 i=i+1;
78 }
79 miro.mlt(nrOfColumns*square.side());
80 }
81
82 private static void paintOneSquare(SPainter miro, SSquare square) {
83 square.s2();
84 miro.setColor(randomColor());
85 miro.paint(square);
86 miro.setColor(Color.BLACK);
87 miro.draw(square);
88 square.x2();
89 }
90
91 private static Color randomColor() {
92 Random rgen = new Random();
93 int r = rgen.nextInt(256);
94 int g = rgen.nextInt(256);
95 int b = rgen.nextInt(256);
96 return new Color(r,b,g);
97 }
98 }