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