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();
                 }
         }
 }