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