• GUIRationalTester
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class GUIRationalTester extends JApplet implements ActionListener {
       private Rational r1,r2,result;
    
       private JLabel 	numeratorLabel1, 
       			numeratorLabel2, 
    			denominatorLabel1, 
    			denominatorLabel2;
    
       private JTextField 	numeratorField1, 
    			numeratorField2, 
    			denominatorField1, 
    			denominatorField2,
    			displayField;
    
       private JButton addButton;
    
       // create Time3 object and set up GUI
       public void init()
       {
          // get applet's content pane and change its layout to FlowLayout
          Container container = getContentPane();  
          container.setLayout( new FlowLayout() ); 
    
          // set up Labels and Fields
          numeratorLabel1 = new JLabel( "r1 numerator" );
          numeratorField1 = new JTextField( 10 );
          denominatorLabel1 = new JLabel( "r1 denominator" );
          denominatorField1 = new JTextField( 10 );
    
          container.add( numeratorLabel1 );
          container.add( numeratorField1 );
    
          container.add( denominatorLabel1 );
          container.add( denominatorField1 );
    
          numeratorLabel2 = new JLabel( "r2 numerator" );
          numeratorField2 = new JTextField( 10 );
          denominatorLabel2 = new JLabel( "r2 denominator" );
          denominatorField2 = new JTextField( 10 );
    
          container.add( numeratorLabel2 );
          container.add( numeratorField2 );
    
          container.add( denominatorLabel2 );
          container.add( denominatorField2 );
    
     
          // set up displayField
          displayField = new JTextField( 30 );
          displayField.setEditable( false );
          container.add( displayField );
    
          // set up addButton
          addButton = new JButton( "Add" );
          container.add( addButton);
    
          // register event handlers; this applet is the ActionListener, 
          // which contains method actionPerformed that will be called to 
          // handle action events generated by addButton
     
          addButton.addActionListener( this );
    
       } // end method init
    
       // event handler for button and textfield events
       public void actionPerformed( ActionEvent event )
       {
          int a = Integer.parseInt(numeratorField1.getText()); 
          int b = Integer.parseInt(denominatorField1.getText()); 
          int c = Integer.parseInt(numeratorField2.getText()); 
          int d = Integer.parseInt(denominatorField2.getText()); 
    
          r1 = new Rational(a,b);
          r1.reduce();
          
          r2 = new Rational(c,d);
          r2.reduce();
    
          result = r1.add(r2);
          result.reduce();   
          
    
          displayField.setText(r1.toString() + " + " + r2.toString() + " = " + result.toString());
    
    
       } // end method actionPerformed
    
    } // end class GUIRationalTester