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       private void paintWhiteSquare(SPainter painter, SSquare square) {
26           painter.moveToCenter();
27           painter.setColor(Color.WHITE);
28           painter.paint(square);
29       }
30   
31       private void paintBlueCircle(SPainter painter, SCircle dot) {
32           painter.moveToCenter();
33           painter.mfd(100);
34           painter.mlt(100);
35           painter.setColor(Color.BLUE);
36           painter.paint(dot);
37       }
38   
39       private void paintRedCircle(SPainter painter, SCircle dot) {
40           painter.moveToCenter();
41           painter.mbk(100);
42           painter.mrt(100);
43          painter.setColor(Color.RED);
44          painter.paint(dot);
45       }
46   
47       private void paintGreenCircles(SPainter painter, SCircle dot) {
48           painter.moveToCenter();
49           painter.mbk(100);
50           painter.mlt(100);
51           painter.setColor(Color.GREEN);
52           painter.paint(dot);
53           painter.moveToCenter();
54           painter.mfd(100);
55           painter.mrt(100);
56           painter.paint(dot);
57       }
58   
59   // REQUIRED INFRASTRUCTURE
60   
61       public KanizsaSquare() {
62           paintTheImage();
63       }
64   
65       public static void main(String[] args) {
66           SwingUtilities.invokeLater(new Runnable() {
67               public void run() {
68                   new KanizsaSquare();
69               }
70           });
71       }
72   }
73