1 package npw; 2 /* 3 * Program to paint a Kanizsa Square in the context of the Nonrepresentational Painting World, NPW 4 */ 5 6 import java.awt.Color; 7 import javax.swing.SwingUtilities; 8 import painter.SPainter; 9 import shapes.SCircle; 10 import shapes.SSquare; 11 12 public class KanizsaSquare { 13 //THE SOLUTION TO THE Kanizsa Square PROBLEM 14 15 private void paintTheImage() 16 { 17 18 SPainter painter = new SPainter("Kanizsa Square",400,400); 19 20 SCircle dot = new SCircle(75); 21 paintBlueCircle(painter, dot); 22 paintRedCircle(painter, dot); 23 paintGreenCircles(painter, dot); 24 25 SSquare square = new SSquare(200); 26 paintWhiteSquare(painter, square); 27 } 28 29 private void paintWhiteSquare(SPainter painter, SSquare square) 30 { 31 painter.setColor(Color.WHITE); 32 painter.paint(square); 33 34 35 } 36 37 private void paintGreenCircles(SPainter painter, SCircle dot) 38 { 39 painter.setColor(Color.GREEN); 40 painter.mfd(100); 41 painter.mrt(100); 42 painter.paint(dot); 43 44 painter.mbk(200); 45 painter.mlt(200); 46 painter.paint(dot); 47 painter.moveToCenter(); 48 49 } 50 51 private void paintRedCircle(SPainter painter, SCircle dot) 52 { 53 painter.setColor(Color.RED); 54 painter.mbk(100); 55 painter.mrt(100); 56 painter.paint(dot); 57 painter.moveToCenter(); 58 59 } 60 61 private void paintBlueCircle(SPainter painter, SCircle dot) 62 { 63 painter.setColor(Color.BLUE); 64 painter.mfd(100); 65 painter.mlt(100); 66 painter.paint(dot); 67 painter.moveToCenter(); 68 69 } 70 71 //REQUIRED INFRASTRUCTURE 72 73 public KanizsaSquare() 74 { 75 paintTheImage(); 76 } 77 78 public static void main(String[] args) 79 { 80 SwingUtilities.invokeLater(new Runnable() 81 { 82 public void run(){ 83 new KanizsaSquare(); 84 } 85 }); 86 } 87 } 88