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