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