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