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   
13   
14       //The SOLUTION TO THE BLUE DOT PROBLEM
15       private void paintTheImage() {
16   
17           SPainter painter = new SPainter("KanizsaSquare",400,400);
18   
19           SCircle dot = new SCircle(75);
20   
21   
22           paintBlueCircle(painter, dot);
23           paintRedCircle(painter,dot);
24           paintGreenCircles(painter, dot);
25   
26           SSquare square = new SSquare(200);painter.moveToCenter();
27           painter.setColor(Color.WHITE);
28           painter.paint(square);
29       }
30       private void paintWhiteSquare(SPainter painter, SSquare square) {
31   
32       }
33       private void paintRedCircle(SPainter painter, SCircle dot) {
34           painter.mrt(100);painter.mbk(100);
35           painter.setColor(Color.red);
36           painter.paint(dot); }
37   
38       private void paintGreenCircles(SPainter painter, SCircle dot) {
39   
40           { painter.mlt(200);
41               painter.setColor(Color.green);
42               painter.paint(dot);}
43           painter.mfd(200);painter.mrt(200);
44   
45           painter.setColor(Color.GREEN);
46           painter.paint(dot);
47       }
48   
49       private void paintBlueCircle(SPainter painter, SCircle dot) {
50   
51           painter.mfd(100);painter.mlt(100);
52           painter.setColor(Color.BLUE);
53           painter.paint(dot);
54           painter.moveToCenter(); }
55   
56       //REQUIRED INFRASTRUCTURE
57       public KanizsaSquare() {
58           paintTheImage(); }
59   
60       public static void main(String[] args) {
61           SwingUtilities.invokeLater(new Runnable() {
62               public void run() {
63                   new KanizsaSquare(); }
64           });
65       }
66   }