GUI.java
package main; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Gui extends JFrame{ private static final long serialVersionUID = 1L; private MyCanvas canvas = new MyCanvas(); private JButton reset = new JButton("Reset"); private JLabel dist = new JLabel("Distance: "); private JLabel angle = new JLabel("Angle: "); public Gui(){ super("IRrational"); JFrame.setDefaultLookAndFeelDecorated(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); canvas.setSize(640,480); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(640,510)); setLayout(new BorderLayout()); JPanel control = new JPanel(); control.setLayout(new FlowLayout()); panel.add(canvas); control.add(reset); control.add(dist); control.add(angle); reset.addActionListener(new Listener()); getContentPane().add(panel,BorderLayout.CENTER); getContentPane().add(control,BorderLayout.SOUTH); pack(); setVisible(true); setResizable(false); } public void paint(){ canvas.plot(getAngle(),getDist()); dist.setText("Distance: "+Math.round(getDist())+" cm"); angle.setText("Angle: "+Math.round(getAngle())+" degrees"); } private double getAngle() { return SimpleRead.getAngle(); } private double getDist() { return SimpleRead.getDist(); } class MyCanvas extends Canvas{ Graphics asr; public void paint(Graphics g){ asr = g; g.setColor(Color.GRAY); g.fillRect(0,0,640,480); g.setColor(Color.BLACK); g.fillArc(50,150,540,540,0,180); g.setColor(Color.RED); g.drawArc(50+135,150+135,270,270,0,180); g.drawArc(50+135+72,150+68+135,135,135,0,180); g.drawArc(50+72,150+68,270+135,270+135,0,180); g.drawString("40 cm",320+135,420); g.drawString("20 cm",320+72,420); g.drawString("60 cm",320+135+72,420); g.drawString("80 cm",320+135+135,420); plot(getAngle(),getDist()); } private void plot(double angle, double dist) { asr = getGraphics(); if (dist>78) dist = 78; dist = dist/80*270; int x = (int)Math.round(320+ Math.cos(Math.toRadians(angle))*dist); int y = (int)Math.round(420- Math.sin(Math.toRadians(angle))*dist); asr.setColor(Color.GREEN); asr.fillRect(x-5,y-5,2,2); asr.setColor(Color.WHITE); if (angle==0 || angle == 180) repaint(); } } class Listener implements ActionListener{ public void actionPerformed(ActionEvent arg0) { canvas.repaint(); } } }