1 package npw; 2 3 import painter.SPainter; 4 import shapes.SSquare; 5 6 import java.awt.Color; 7 import javax.swing.SwingUtilities; 8 import painter.SPainter; 9 import shapes.SCircle; 10 11 public class KanizsaSquare { 12 13 // THE SOLUTION TO THE Kanizsa Square PROBLEM 14 15 private void paintTheImage() { 16 SPainter painter = new SPainter("Kanizsa Square", 400, 400); 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 // REQUIRED INFRASTRUCTURE 28 public KanizsaSquare() { 29 paintTheImage(); 30 } 31 32 public static void main(String[] args) { 33 SwingUtilities.invokeLater(new Runnable() { 34 public void run() { 35 new KanizsaSquare(); 36 } 37 }); 38 } 39 // Building the methods to paint the circles 40 41 private void paintBlueCircle(SPainter painter, SCircle dot) { 42 painter.setColor(Color.BLUE); 43 painter.mfd(100); 44 painter.mlt(100); 45 painter.paint(dot); 46 painter.mrt(100); 47 painter.mbk(100); 48 } 49 50 private void paintRedCircle(SPainter painter, SCircle dot) { 51 painter.setColor(Color.RED); 52 painter.mbk(100); 53 painter.mrt(100); 54 painter.paint(dot); 55 painter.mlt(100); 56 painter.mfd(100); 57 } 58 59 private void paintGreenCircles(SPainter painter, SCircle dot) { 60 painter.setColor(Color.GREEN); 61 painter.mbk(100); 62 painter.mlt(100); 63 painter.paint(dot); 64 painter.mrt(100); 65 painter.mfd(100); 66 painter.mrt(100); 67 painter.mfd(100); 68 painter.paint(dot); 69 painter.mbk(100); 70 painter.mlt(100); 71 } 72 73 private void paintWhiteSquare(SPainter painter, SSquare square) { 74 painter.setColor(Color.white); 75 painter.paint(square); 76 } 77 } 78 79