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