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 // THE SOLUTION TO THE Kanizsa Square PROBLEM 16 17 private void paintTheImage() { 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 painter.setColor(Color.WHITE); 31 painter.paint(square); 32 33 } 34 35 private void paintGreenCircles(SPainter painter, SCircle dot) { 36 painter.setColor(Color.GREEN); 37 painter.mbk(100); 38 painter.mlt(100); 39 painter.paint(dot); 40 painter.mfd(100); 41 painter.mrt(100); 42 painter.mfd(100); 43 painter.mrt(100); 44 painter.paint(dot); 45 painter.mbk(100); 46 painter.mlt(100); 47 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.mfd(100); 56 painter.mlt(100); 57 } 58 59 private void paintBlueCircle(SPainter painter, SCircle dot) { 60 painter.setColor(Color.BLUE); 61 painter.mfd(100); 62 painter.mlt(100); 63 painter.paint(dot); 64 painter.mbk(100); 65 painter.mrt(100); 66 } 67 68 // REQUIRED INFRASTRUCTURE 69 70 public KanizsaSquare() { 71 paintTheImage(); 72 } 73 74 public static void main(String[] args) { 75 SwingUtilities.invokeLater(new Runnable() { 76 public void run() { 77 new KanizsaSquare(); 78 } 79 }); 80 } 81 82 } 83