1 /* 2 * Program to paint a Kanizsa Square of any size, after asking for an input, 3 * in the context of the Nonrepresentational Painting World, NPW. 4 */ 5 6 package npw; 7 8 import painter.SPainter; 9 import shapes.SCircle; 10 import shapes.SSquare; 11 12 import javax.swing.*; 13 import java.awt.*; 14 15 public class KanizsaSquareInput { 16 // THE SOLUTION TO THE KANIZSA SQUARE INPUT PROBLEM 17 private void paintTheImage() { 18 //input side length 19 String answer = JOptionPane.showInputDialog(null, "Please enter square side length"); 20 21 System.out.println("Square Side Length = " + answer); 22 int sideLength=Integer.parseInt(answer); 23 24 25 //painting 26 SPainter deb = new SPainter("Kanizsa Square",2*sideLength,2*sideLength); 27 28 double ratio = 0.375; 29 30 SSquare box = new SSquare(sideLength); 31 SCircle dot = new SCircle(ratio*box.side()); 32 33 paintBlueCircle(deb,dot,box); 34 paintRedCircle(deb,dot,box); 35 paintGreenCircles(deb,dot,box); 36 paintWhiteSquare(deb,box); 37 38 39 } 40 private void paintBlueCircle(SPainter deb, SCircle dot, SSquare box) { 41 //move painter into position 42 deb.mfd(0.5*box.side()); 43 deb.mlt(0.5* box.side()); 44 45 //paint circle 46 deb.setColor(Color.BLUE); 47 deb.paint(dot); 48 49 //move painter to center 50 deb.moveToCenter(); 51 52 } 53 private void paintRedCircle(SPainter deb, SCircle dot, SSquare box) { 54 //move painter into position 55 deb.mbk(0.5*box.side()); 56 deb.mrt(0.5* box.side()); 57 58 //paint circle 59 deb.setColor(Color.RED); 60 deb.paint(dot); 61 62 //move painter to center 63 deb.moveToCenter(); 64 65 } 66 private void paintGreenCircles(SPainter deb, SCircle dot, SSquare box) { 67 //NE Circle 68 //move painter into position 69 deb.mfd(0.5*box.side()); 70 deb.mrt(0.5* box.side()); 71 72 //paint circle 73 deb.setColor(Color.GREEN); 74 deb.paint(dot); 75 76 //move painter to center 77 deb.moveToCenter(); 78 79 //SW Circle 80 //move painter into position 81 deb.mbk(0.5*box.side()); 82 deb.mlt(0.5* box.side()); 83 84 //paint circle 85 deb.setColor(Color.GREEN); 86 deb.paint(dot); 87 88 //move painter to center 89 deb.moveToCenter(); 90 } 91 92 private void paintWhiteSquare(SPainter deb, SSquare box) { 93 //paint square 94 deb.setColor(Color.WHITE); 95 deb.paint(box); 96 97 //move painter to center 98 deb.moveToCenter(); 99 100 } 101 102 //Required Infrastructure 103 104 public KanizsaSquareInput() { 105 paintTheImage(); 106 } 107 108 public static void main(String[] args) { 109 SwingUtilities.invokeLater(new Runnable() { 110 public void run() { 111 new KanizsaSquareInput(); 112 } 113 }); 114 } 115 } 116