KanizsaSquare.java
1    package npw;
2    
3    import java.awt.Color;
4    import javax.swing.SwingUtilities;
5    import painter.SPainter;
6    import shapes.SCircle;
7    import shapes.SSquare;
8    
9    public class KanizsaSquare { 
10   private void paintTheImage() {
11   
12       SPainter painter = new SPainter("Kanizsa Square",400,400);
13   
14       SCircle dot = new SCircle(75);
15       paintBlueCircle(painter, dot);
16       paintRedCircle(painter, dot);
17       paintGreenCircles(painter, dot);
18       
19       SSquare square = new SSquare(200);
20       paintWhiteSquare(painter, square);
21   
22   // Required Infrastructure
23   }
24   
25       private void paintWhiteSquare(SPainter painter, SSquare square) {
26           painter.setColor(Color.WHITE);
27           painter.paint(square);
28           painter.moveToCenter();
29   
30   }
31   
32       private void paintGreenCircles(SPainter painter, SCircle dot){
33           painter.setColor(Color.GREEN);
34           painter.mfd(100);
35           painter.tr();
36           painter.mfd(100);
37           painter.paint(dot);
38           painter.moveToCenter();
39           painter.mbk(100);
40           painter.tr();
41           painter.mfd(100);
42           painter.paint(dot);
43           painter.moveToCenter();
44   
45   
46   }
47   
48       private void paintRedCircle(SPainter painter, SCircle dot) {
49           painter.setColor(Color.RED);
50           painter.mbk(100);
51           painter.tl();
52           painter.mfd(100);
53           painter.paint(dot);
54           painter.moveToCenter();
55   
56   }
57   
58       private void paintBlueCircle(SPainter painter, SCircle dot) {
59           painter.setColor(Color.BLUE);
60           painter.mfd(100);
61           painter.tl();
62           painter.mfd(100);
63           painter.paint(dot);
64           painter.moveToCenter();
65   }
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   }