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