KanizsaSquare.java
1    /* 
2     *Program to paint a blue dot in the context of the Nonrepresentational 
3     * Painting World< NPW 
4     */
5    package npw;
6    
7    import java.awt.Color;
8    import java.awt.geom.Point2D;
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 BLUE DOT 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       }
29   
30       private void paintBlueCircle(SPainter painter, SCircle dot) {
31           painter.mfd(100);
32           painter.mlt(100);
33           painter.setColor(Color.BLUE);
34           painter.paint(dot);
35           painter.moveToCenter();
36       }
37   
38       private void paintRedCircle(SPainter painter, SCircle dot) {
39           painter.mbk(100);
40           painter.mrt(100);
41           painter.setColor(Color.RED);
42           painter.paint(dot);
43           painter.moveToCenter();
44       }
45   
46       private void paintWhiteSquare(SPainter painter, SSquare square) {
47           painter.setColor(Color.WHITE);
48           painter.paint(square);
49           painter.moveToCenter();
50   
51       }
52   
53       private void paintGreenCircles(SPainter painter, SCircle dot) {
54           painter.mfd(100);
55           painter.mrt(100);
56           painter.setColor(Color.GREEN);
57           painter.paint(dot);
58           painter.moveToCenter();
59           painter.mbk(100);
60           painter.mlt(100);
61           painter.setColor(Color.GREEN);
62           painter.paint(dot);
63           painter.moveToCenter();
64   
65   
66       }
67   
68       // REQUIRED INFRASTRUCTURE
69   
70       public KanizsaSquare() {
71           paintTheImage ();
72       }
73   
74       public static void main (String [] args) {
75           SwingUtilities.invokeLater(new Runnable() {
76               public void run() {
77                   new KanizsaSquare();
78               }
79           });
80       }
81   }
82