KanizsaSquare.java
1    /* 
2     * Kanizsa Square for assignment one 
3     */
4    
5    package npw;
6    
7    import java.awt.Color;
8    import javax.swing.SwingUtilities;
9    import painter.SPainter;
10   import shapes.SCircle;
11   import shapes.SSquare;
12   
13   
14   public class KanizsaSquare {
15   
16       // THE SOLUTION TO THE KANIZSA SQUARE PROBLEM
17       private void paintTheImage() {
18   
19           SPainter painter = new SPainter("Kanizsa Square",400,400);
20   
21           SCircle dot = new SCircle(75);
22           paintBlueCircle(painter, dot);
23           paintRedCircle(painter, dot);
24           paintGreenCircles(painter, dot);
25   
26           SSquare square = new SSquare(200);
27           paintWhiteSquare(painter, square);
28       }
29   
30       private void paintWhiteSquare(SPainter painter, SSquare square) {
31           painter.setColor(Color.white);
32           painter.paint(square);
33       }
34   
35   
36       private void paintGreenCircles(SPainter painter, SCircle dot) {
37           painter.mfd(100);
38           painter.mrt(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       private void paintRedCircle(SPainter painter, SCircle dot) {
49           painter.mbk(100);
50           painter.mrt(100);
51           painter.setColor(Color.red);
52           painter.paint(dot);
53           painter.moveToCenter();
54       }
55   
56       private void paintBlueCircle(SPainter painter, SCircle dot) {
57           painter.mfd(100);
58           painter.mlt(100);
59           painter.setColor(Color.blue);
60           painter.paint(dot);
61           painter.moveToCenter();
62       }
63   
64       //REQUIRED INFRASTRUCTURE
65   
66       public KanizsaSquare() {
67           paintTheImage();
68       }
69   
70       public static void main(String[] args) {
71           SwingUtilities.invokeLater(new Runnable() {
72               public void run() {
73                   new KanizsaSquare();
74               }
75           });
76       }
77   }