KanizsaSquare.java
1    /* 
2    *Program to paint a Kanizsa Square 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   
11   import painter.SPainter;
12   import painter.SPainter;
13   import shapes.SCircle;
14   import shapes.SCircle;
15   import shapes.SSquare;
16   import shapes.SSquare;
17   
18   
19   public class KanizsaSquare {
20       //THE SOLUTION TO THE Kanizsa Square PROBLEM
21   
22       private void paintTheImage() {
23           SPainter painter = new SPainter("Kanizsa Square", 400, 400);
24   
25           SCircle dot = new SCircle(75);
26           paintBlueCircle(painter, dot);
27           paintRedCircle(painter, dot);
28           paintGreenCircles(painter, dot);
29   
30           SSquare square = new SSquare(200);
31           paintWhiteSquare(painter, square);
32   
33       }
34   
35   
36           private void paintBlueCircle (SPainter painter, SCircle dot){
37               painter.mlt(100);
38               painter.mfd(100);
39               painter.setColor(Color.BLUE);
40               painter.paint(dot);
41   
42           }
43   
44   
45           private void paintRedCircle (SPainter painter, SCircle dot){
46           painter.mbk(200);
47           painter.mrt(200);
48           painter.setColor(Color.RED);
49           painter.paint(dot);
50   
51   
52       }
53   
54           private void paintGreenCircles (SPainter painter, SCircle dot){
55   
56               painter.mfd(200);
57               painter.setColor(Color.GREEN);
58               painter.paint(dot);
59   
60   
61               painter.mbk(200);
62               painter.mlt(200);
63               painter.setColor(Color.GREEN);
64               painter.paint(dot);
65   
66   
67   
68           }
69   
70   
71   
72   
73           private void paintWhiteSquare (SPainter painter, SSquare square){
74               painter.moveToCenter();
75               painter.setColor(Color.WHITE);
76               painter.paint(square);
77   
78           }
79   
80   
81   
82       //REQUIRED INFRASTRUCTURE
83       public KanizsaSquare(){
84           paintTheImage();
85       }
86   
87   
88       public static void main (String []args){
89           SwingUtilities.invokeLater(new Runnable() {
90               public void run() {
91                   new KanizsaSquare();
92               }
93           });
94       }
95   }
96   
97   
98   
99