KanizsaSquare.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 KanizsaSquare {
10   
11       //THE SOLUTION TO THE KANIZSA SQUARE PROBLEM
12   
13       private void paintTheImage() {
14           SPainter painter = new SPainter("Kanizsa Square",400,400);
15   
16           SCircle dot = new SCircle(75);
17           paintBlueCircle(painter, dot);
18           paintRedCircle(painter, dot);
19           paintGreenCircles(painter, dot);
20   
21           SSquare square = new SSquare(200);
22           paintWhiteSquare(painter, square);
23   
24       }
25   
26   
27   
28       private void paintGreenCircles(SPainter painter, SCircle dot) {
29           painter.setColor(Color.GREEN);
30           painter.mfd(100);
31           painter.mrt(100);
32           painter.paint(dot);
33           painter.moveToCenter();
34           painter.setColor(Color.GREEN);
35           painter.mbk(100);
36           painter.mlt(100);
37           painter.paint(dot);
38           painter.moveToCenter();
39       }
40   
41       private void paintRedCircle(SPainter painter, SCircle dot) {
42           painter.setColor(Color.RED);
43           painter.mbk(100);
44           painter.mrt(100);
45           painter.paint(dot);
46           painter.moveToCenter();
47       }
48   
49       private void paintBlueCircle(SPainter painter, SCircle dot) {
50           painter.setColor(Color.BLUE);
51           painter.mfd(100);
52           painter.mlt(100);
53           painter.paint(dot);
54           painter.moveToCenter();
55       }
56       private void paintWhiteSquare(SPainter painter, SSquare square) {
57           painter.setColor(Color.WHITE);
58           painter.paint(square);
59   
60       }
61       // REQUIRED INFRASTRUCTURE
62   
63       public KanizsaSquare() {
64           paintTheImage();
65   
66       }
67   
68       public static void main(String[] args) {
69           SwingUtilities.invokeLater(new Runnable() {
70               public void run() {
71                   new KanizsaSquare();
72               }
73           });
74       }
75   }
76