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