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