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