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