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