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