1 2 package npw; 3 4 import painter.SPainter; 5 import shapes.SCircle; 6 import shapes.SSquare; 7 8 import javax.swing.*; 9 import java.awt.*; 10 11 public class KanizsaSquare { 12 // solution to blue dot problem 13 14 private void paintTheImage() { 15 SPainter painter = new SPainter("KanizsaSquare",400,400); 16 17 SCircle dot = new SCircle(75); 18 paintBlueCircle(painter,dot); 19 paintRedCircle(painter, dot); 20 paintGreenCircles(painter,dot); 21 22 SSquare square = new SSquare(200); 23 paintWhiteSquare(painter,square); 24 25 26 } 27 28 private void paintWhiteSquare(SPainter painter, SSquare square) { 29 painter.setColor(Color.WHITE); 30 painter.paint(square); 31 32 } 33 34 35 private void paintGreenCircles(SPainter painter, SCircle dot) { 36 painter.mfd(100); 37 painter.mrt(100); 38 painter.setColor(Color.GREEN); 39 painter.paint(dot); 40 painter.moveToCenter(); 41 painter.mbk(100); 42 painter.mlt(100); 43 painter.paint(dot); 44 painter.moveToCenter(); 45 46 } 47 48 49 private void paintRedCircle(SPainter painter, SCircle dot) { 50 painter.mbk(100); 51 painter.mrt(100); 52 painter.setColor(Color.RED); 53 painter.paint(dot); 54 painter.moveToCenter(); 55 } 56 57 private void paintBlueCircle(SPainter painter, SCircle dot) { 58 painter.mfd(100); 59 painter.mlt(100); 60 painter.setColor(Color.BLUE); 61 painter.paint(dot); 62 painter.moveToCenter(); 63 } 64 65 66 //required infrastructure 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 }); 79 } 80 } 81 82