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   import painter.SPainter;
11   import shapes.SCircle;
12   import shapes.SSquare;
13   
14   public class KanizsaSquare {
15   
16       //THE SOLUTION TO THE KANIZSA SQUARE 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   
30       private void paintWhiteSquare(SPainter painter, SSquare square) {
31           painter.setColor(Color.WHITE);
32           painter.paint(square);
33       }
34   
35       private void paintGreenCircles(SPainter painter, SCircle dot) {
36           painter.mfd (100);
37           painter.mrt(100);
38           painter.setColor(Color.GREEN);
39           painter.paint(dot);
40           painter.mbk(200);
41           painter.mlt(200);
42           painter.paint(dot);
43           painter.mfd(100);
44           painter.mrt(100);
45       }
46   
47       private void paintRedCircle(SPainter painter, SCircle dot) {
48           painter.mbk(100);
49           painter.mrt(100);
50           painter.setColor(Color.RED);
51           painter.paint(dot);
52           painter.mlt(100);
53           painter.mfd(100);
54       }
55   
56       private void paintBlueCircle(SPainter painter, SCircle dot) {
57           painter.mfd(100);
58           painter.mlt(100);
59           painter.setColor(Color.BLUE);
60           painter.paint(dot);
61           painter.mrt(100);
62           painter.mbk(100);
63       }
64   
65       //REQUIRED INFRASTRUCTURE
66   
67       public KanizsaSquare() {
68           paintTheImage();
69       }
70   
71       public static void main(String[] args) {
72           SwingUtilities.invokeLater(new Runnable() {
73               public void run() {
74                   new KanizsaSquare();
75               }
76           });
77       }
78   }
79