KaniszaSquare.java
1    package npw;
2    
3    import java.awt.Color;
4    import javax.swing.SwingUtilities;
5    import painter. SPainter;
6    import shapes.SCircle;
7    import shapes.SSquare;
8    
9    public class KaniszaSquare {
10   
11       //THE SOLUTION TO THE KANISzA SQUARE PROBLEM
12   
13       private void paintTheImage() {
14           SPainter painter = new SPainter("Kanisza Square" ,400,400);
15   
16           SSquare square = new SSquare(200);
17           SCircle dot = new SCircle(50);
18   
19           drawBlackSquare(painter, square);
20           paintBlueCircles(painter, dot);
21           paintGreenCircles(painter, dot);
22           paintWhiteSquare(painter, square);
23       }
24   
25       private void paintWhiteSquare(SPainter painter, SSquare square) {
26           painter.setColor(Color. WHITE);
27           painter.paint(square);
28       }
29   
30       private void paintGreenCircles(SPainter painter, SCircle dot) {
31           painter.mfd(105);
32           painter.mrt(105);
33           painter.setColor(Color.GREEN);
34           painter.paint(dot);
35           painter.mbk(210);
36           painter.mlt(210);
37           painter.paint(dot);
38           painter.moveToCenter();
39       }
40   
41       private void paintBlueCircles(SPainter painter, SCircle dot) {
42           painter.mfd(105);
43           painter.mlt(105);
44           painter.setColor(Color.BLUE);
45           painter.paint(dot);
46           painter.mbk(210);
47           painter.mrt(210);
48           painter.paint(dot);
49           painter.moveToCenter();
50       }
51   
52       private void drawBlackSquare(SPainter painter, SSquare square) {
53           painter.setHeading(45);
54           painter.draw(square);
55           painter.setHeading(0);
56       }
57   
58   //REQUIRED INFRASTRUCTURE
59   
60       public KaniszaSquare() {
61           paintTheImage();
62       }
63   
64       public static void main(String[] args) {
65           SwingUtilities.invokeLater(new Runnable() {
66               public void run() {
67                   new KaniszaSquare();
68               }
69           });
70       }
71   }