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