1 package npw; 2 // 3 //Program to paint a Kanizsa Square int the context of the nonrepresentational 4 // Painting World, NPW 5 // 6 7 8 import java.awt.Color; 9 import javax.swing.*; 10 11 import painter.SPainter; 12 import shapes.SCircle; 13 import shapes.SSquare; 14 15 public class KanizsaSquare { 16 //THE SOLUTION TO THE Kanizsa Square PROBLEM 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 // REQUIRED INFRASTRUCTURE 29 30 31 32 33 34 35 36 37 38 private void paintBlueCircle(SPainter painter, SCircle dot) { 39 painter.setColor(Color.BLUE); 40 painter.mlt(100); 41 painter.mfd(100); 42 43 painter.paint(dot); 44 painter.moveToCenter(); 45 } 46 47 private void paintRedCircle(SPainter painter, SCircle dot) { 48 painter.setColor(Color.RED); 49 painter.mrt(100); 50 painter.mbk(100); 51 painter.paint(dot); 52 painter.moveToCenter(); 53 54 55 } 56 57 private void paintGreenCircles(SPainter painter, SCircle dot) { 58 painter.setColor(Color.GREEN); 59 60 painter.mlt(100); 61 painter.mbk(100); 62 painter.paint(dot); 63 painter.moveToCenter(); 64 65 painter.setColor(Color.GREEN); 66 painter.mfd(100); 67 painter.mrt(100); 68 painter.paint(dot); 69 } 70 71 private void paintWhiteSquare(SPainter painter, SSquare square) { 72 73 painter.setColor(Color.white); 74 painter.moveToCenter(); 75 painter.paint(square); 76 77 78 79 80 81 } 82 public KanizsaSquare() { 83 paintTheImage(); 84 } 85 public static void main(String[]args) { 86 SwingUtilities.invokeLater(new Runnable() { 87 public void run() { 88 new KanizsaSquare(); 89 } 90 91 }); 92 } 93 }