1 /* 2 * Program to paint a Kanizsa Square in the context of the nonrepresentational 3 * Painting world, NPW. 4 */ 5 6 package npw; 7 8 import java.awt.Color; 9 import javax.swing.SwingUtilities; 10 import painter.SPainter; 11 import shapes.SCircle; 12 import shapes.SSquare; 13 14 public class KanizsaSquare { 15 16 //THE SOLUTION TO THE KANIZSA SQUARE PROBLEM 17 18 private void paintTheImage() { 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 private void paintGreenCircles(SPainter painter, SCircle dot) { 36 painter.mfd (100); 37 painter.mrt(100); 38 painter.setColor(Color.GREEN); 39 painter.paint(dot); 40 painter.mbk(200); 41 painter.mlt(200); 42 painter.paint(dot); 43 painter.mfd(100); 44 painter.mrt(100); 45 } 46 47 private void paintRedCircle(SPainter painter, SCircle dot) { 48 painter.mbk(100); 49 painter.mrt(100); 50 painter.setColor(Color.RED); 51 painter.paint(dot); 52 painter.mlt(100); 53 painter.mfd(100); 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.mrt(100); 62 painter.mbk(100); 63 } 64 65 //REQUIRED INFRASTRUCTURE 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 } 79