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       // THE SOLUTION TO THE BLUE DOT PROBLEM
16   
17       private void paintingCode() {
18           SPainter painter = new SPainter("Blue Dot", 400, 400);
19           SCircle dot = new SCircle(75);
20           paintBlueCircle(painter, dot);
21           paintRedCircle(painter, dot);
22           paintGreenCircle(painter, dot);
23           paintGreenCircle2(painter, dot);
24   
25           SSquare square = new SSquare(200);
26           paintWhiteSquare(painter, square);
27       }
28   
29       // REQUIRED INFRASTRUCTURE
30   
31       public KanizsaSquare() {
32           paintingCode();
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   
43       private void paintBlueCircle(SPainter painter, SCircle dot) {
44           painter.mlt(100);
45           painter.mfd(100);
46           painter.setColor(Color.BLUE);
47           painter.paint(dot);
48           painter.mrt(100);
49           painter.mbk(100);
50   
51       }
52   
53       private void paintRedCircle(SPainter painter, SCircle dot) {
54           painter.mbk(100);
55           painter.mrt(100);
56           painter.setColor(Color.RED);
57           painter.paint(dot);
58           painter.mfd(100);
59           painter.mlt(100);
60       }
61   
62       private void paintGreenCircle(SPainter painter, SCircle dot) {
63           painter.mbk(100);
64           painter.mlt(100);
65           painter.setColor(Color.GREEN);
66           painter.paint(dot);
67           painter.mfd(100);
68           painter.mrt(100);
69       }
70   
71       private void paintGreenCircle2(SPainter painter, SCircle dot) {
72           painter.mfd(100);
73           painter.mrt(100);
74           painter.paint(dot);
75           painter.mbk(100);
76           painter.mlt(100);
77       }
78   
79       private void paintWhiteSquare(SPainter painter, SSquare square) {
80           painter.setColor(Color.WHITE);
81           painter.paint(square);
82       }
83   }