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