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