KanizsaSquare.java
1    package npw;
2    
3    import painter.SPainter;
4    import shapes.SSquare;
5    
6    import java.awt.Color;
7    import javax.swing.SwingUtilities;
8    import painter.SPainter;
9    import shapes.SCircle;
10   
11   public class KanizsaSquare {
12   
13       // THE SOLUTION TO THE Kanizsa Square PROBLEM
14   
15       private void paintTheImage() {
16           SPainter painter = new SPainter("Kanizsa Square", 400, 400);
17           SCircle dot = new SCircle(75);
18           paintBlueCircle(painter, dot);
19           paintRedCircle(painter, dot);
20           paintGreenCircles(painter, dot);
21   
22           SSquare square = new SSquare(200);
23           paintWhiteSquare(painter, square);
24       }
25   
26   
27       // REQUIRED INFRASTRUCTURE
28       public KanizsaSquare() {
29           paintTheImage();
30       }
31   
32       public static void main(String[] args) {
33           SwingUtilities.invokeLater(new Runnable() {
34               public void run() {
35                   new KanizsaSquare();
36               }
37           });
38       }
39   // Building  the methods to paint the circles
40   
41       private void paintBlueCircle(SPainter painter, SCircle dot) {
42           painter.setColor(Color.BLUE);
43           painter.mfd(100);
44           painter.mlt(100);
45           painter.paint(dot);
46           painter.mrt(100);
47           painter.mbk(100);
48       }
49   
50       private void paintRedCircle(SPainter painter, SCircle dot) {
51           painter.setColor(Color.RED);
52           painter.mbk(100);
53           painter.mrt(100);
54           painter.paint(dot);
55           painter.mlt(100);
56           painter.mfd(100);
57       }
58   
59       private void paintGreenCircles(SPainter painter, SCircle dot) {
60           painter.setColor(Color.GREEN);
61           painter.mbk(100);
62           painter.mlt(100);
63           painter.paint(dot);
64           painter.mrt(100);
65           painter.mfd(100);
66           painter.mrt(100);
67           painter.mfd(100);
68           painter.paint(dot);
69           painter.mbk(100);
70           painter.mlt(100);
71       }
72   
73       private void paintWhiteSquare(SPainter painter, SSquare square) {
74           painter.setColor(Color.white);
75           painter.paint(square);
76       }
77   }
78   
79