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