public void actionPerformed(ActionEvent event) {
				double b = Double.parseDouble(B.getText());
				double c = Double.parseDouble(C.getText());
				double d = Double.parseDouble(D.getText());
				double e = Double.parseDouble(E.getText());
				double f = Double.parseDouble(F.getText());
				double g = Double.parseDouble(G.getText());
				double mint1 = Double.parseDouble(minTheta1.getText());
				double mint2 = Double.parseDouble(minTheta2.getText());
				double mint3 = Double.parseDouble(minTheta1.getText());
				double maxt1 = Double.parseDouble(maxTheta1.getText()) + 1; 
				double maxt2 = Double.parseDouble(maxTheta2.getText()) + 1;
				double maxt3 = Double.parseDouble(maxTheta3.getText()) + 1;
				double w1=getNewtons(Double.parseDouble(W1.getText()));
				double w2=getNewtons(Double.parseDouble(W2.getText()));
				double w3=getNewtons(Double.parseDouble(W3.getText()));
				double w4=getNewtons(Double.parseDouble(W4.getText()));
				double w5=getNewtons(Double.parseDouble(W5.getText()));
				double w6=getNewtons(Double.parseDouble(W6.getText()));
				double a=Double.parseDouble(A.getText());
				double h = Double.parseDouble(H.getText());
				boolean whatIsWorking[][] = new boolean[(int) (f)][(int) (e+h)];// whatIsWorking[x][y]
				double maxT1=0;
				double maxT2=0;
				double maxT3=0;
				
				for (boolean row[]: whatIsWorking)
					Arrays.fill(row, false);
				for (double theta1 = mint1; theta1 < maxt1; theta1++) {
					for (double theta2 = mint2; theta2 < maxt2; theta2++) {
						for (double theta3 = mint3; theta3 < maxt3; theta3++) {
							Torque t=robotArmCalculate.getTorque(b, c, d, theta1, theta2, theta3, w1, w2, w3, w4, w5, w6);
							if(t.t1>maxT1)
								maxT1=t.t1;
							if(t.t2>maxT2)
								maxT2=t.t2;
							if(t.t3>maxT3)
								maxT3=t.t3;
							Point endPoint = robotArmCalculate.getEndPoint(b,
									c, d, theta1, theta2, theta3);
							endPoint.x = Math.round(endPoint.x);
							endPoint.y=Math.round(endPoint.y)+a;
							if(endPoint.x<g||endPoint.y<0||endPoint.x-g>whatIsWorking[0].length-1||endPoint.y>(whatIsWorking.length)-1)
								continue;
							whatIsWorking[(int)endPoint.y][(int) ((int) endPoint.x - g)]=true;
						}
					}
				}
				final boolean output[][]=whatIsWorking;
				SwingUtilities.invokeLater(new Runnable() {
			        public void run() {
			        	int [][] out=ScaleDown.boolToInt(output);
			        	out=ScaleDown.scale(out);
			           new doOutput(out);
			        }
			    });
				int max1=(int) maxT1;
				int max2=(int) maxT2;
				int max3=(int) maxT3;
				JOptionPane.showMessageDialog(frmForwardKinematicsCalculator,"Max Torque Per Motor(Newton Meter)\nM1: "+max1+"\nM2: "+max2+"\nM3: "+max3,"Max Torque Report",JOptionPane.INFORMATION_MESSAGE);
			}