KanizsaSquare.java
1    
2    package npw;
3    
4    import painter.SPainter;
5    import shapes.SCircle;
6    import shapes.SSquare;
7    
8    import javax.swing.*;
9    import java.awt.*;
10   
11   public class KanizsaSquare {
12       // solution to blue dot problem
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 paintWhiteSquare(SPainter painter, SSquare square) {
29           painter.setColor(Color.WHITE);
30           painter.paint(square);
31   
32       }
33   
34   
35       private void paintGreenCircles(SPainter painter, SCircle dot) {
36           painter.mfd(100);
37           painter.mrt(100);
38           painter.setColor(Color.GREEN);
39           painter.paint(dot);
40           painter.moveToCenter();
41           painter.mbk(100);
42           painter.mlt(100);
43           painter.paint(dot);
44           painter.moveToCenter();
45   
46       }
47   
48   
49       private void paintRedCircle(SPainter painter, SCircle dot) {
50           painter.mbk(100);
51           painter.mrt(100);
52           painter.setColor(Color.RED);
53           painter.paint(dot);
54           painter.moveToCenter();
55       }
56   
57       private void paintBlueCircle(SPainter painter, SCircle dot) {
58           painter.mfd(100);
59           painter.mlt(100);
60           painter.setColor(Color.BLUE);
61           painter.paint(dot);
62           painter.moveToCenter();
63       }
64   
65   
66       //required infrastructure
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           });
79       }
80   }
81   
82