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 KANIZSASQUARE PROBLEM
12   
13   
14       private void paintTheImage() {
15           SPainter painter = new SPainter("KanizsaSquare", 400, 400);
16   
17           SCircle dot = new SCircle(75);
18           paintBlueCircle(painter, dot);
19           paintRedCircle(painter, dot);
20           paintGreenCircles(painter, dot);
21   
22           SSquare square = new SSquare(200);
23           paintWhiteSquare(painter, square);
24   
25   
26       }
27   
28       private void paintBlueCircle(SPainter painter, SCircle dot) {
29           painter.mfd(100);
30           painter.mlt(100);
31           painter.setColor(Color.blue);
32           painter.paint(dot);
33           painter.moveToCenter();
34       }
35   
36       private void paintGreenCircles(SPainter painter, SCircle dot) {
37           painter.mfd(100);
38           painter.mlt(-100);
39           painter.setColor(Color.green);
40           painter.paint(dot);
41           painter.moveToCenter();
42           painter.mbk(100);
43           painter.mlt(100);
44           painter.paint(dot);
45           painter.moveToCenter();
46   
47       }
48   
49   
50   
51       private void paintRedCircle(SPainter painter, SCircle dot) {
52               painter.mbk(100);
53               painter.mlt(-100);
54               painter.setColor(Color.red);
55               painter.paint(dot);
56               painter.moveToCenter();
57           }
58   
59   
60   
61       private void paintWhiteSquare(SPainter painter, SSquare square) {
62           painter.setColor(Color.white);
63           painter.paint(square);
64       }
65   
66   
67   
68       //required BlueDot()
69       public KanizsaSquare(){
70           paintTheImage();
71       }
72       public static void main(String[] args) {
73           SwingUtilities.invokeLater(new Runnable() {
74               public void run() {
75                   new KanizsaSquare();
76               }
77           });
78       }
79   }
80   
81   
82   
83       
84       
85   
86