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 11 import painter.SPainter; 12 import painter.SPainter; 13 import shapes.SCircle; 14 import shapes.SCircle; 15 import shapes.SSquare; 16 import shapes.SSquare; 17 18 19 public class KanizsaSquare { 20 //THE SOLUTION TO THE Kanizsa Square PROBLEM 21 22 private void paintTheImage() { 23 SPainter painter = new SPainter("Kanizsa Square", 400, 400); 24 25 SCircle dot = new SCircle(75); 26 paintBlueCircle(painter, dot); 27 paintRedCircle(painter, dot); 28 paintGreenCircles(painter, dot); 29 30 SSquare square = new SSquare(200); 31 paintWhiteSquare(painter, square); 32 33 } 34 35 36 private void paintBlueCircle (SPainter painter, SCircle dot){ 37 painter.mlt(100); 38 painter.mfd(100); 39 painter.setColor(Color.BLUE); 40 painter.paint(dot); 41 42 } 43 44 45 private void paintRedCircle (SPainter painter, SCircle dot){ 46 painter.mbk(200); 47 painter.mrt(200); 48 painter.setColor(Color.RED); 49 painter.paint(dot); 50 51 52 } 53 54 private void paintGreenCircles (SPainter painter, SCircle dot){ 55 56 painter.mfd(200); 57 painter.setColor(Color.GREEN); 58 painter.paint(dot); 59 60 61 painter.mbk(200); 62 painter.mlt(200); 63 painter.setColor(Color.GREEN); 64 painter.paint(dot); 65 66 67 68 } 69 70 71 72 73 private void paintWhiteSquare (SPainter painter, SSquare square){ 74 painter.moveToCenter(); 75 painter.setColor(Color.WHITE); 76 painter.paint(square); 77 78 } 79 80 81 82 //REQUIRED INFRASTRUCTURE 83 public KanizsaSquare(){ 84 paintTheImage(); 85 } 86 87 88 public static void main (String []args){ 89 SwingUtilities.invokeLater(new Runnable() { 90 public void run() { 91 new KanizsaSquare(); 92 } 93 }); 94 } 95 } 96 97 98 99