import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SinusCalculator implements ActionListener {
    JFrame     frame;
    JPanel     panel;
    JTextField numberField;
    JLabel     resultLabel;
    JButton    calcButton;

    public SinusCalculator() {
        frame = new JFrame("Sinus Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(200, 40));

        panel = new JPanel(new GridLayout(3, 1));

        numberField = new JTextField();
        calcButton  = new JButton("Calc");
        resultLabel = new JLabel("Result", SwingConstants.LEFT);

        calcButton.addActionListener(this);

        panel.add(numberField);
        panel.add(resultLabel);
        panel.add(calcButton);
        
        frame.getRootPane().setDefaultButton(calcButton);

        frame.getContentPane().add(panel, BorderLayout.CENTER);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }  

    public void actionPerformed(ActionEvent event) {
        Float number = new Float(numberField.getText());
        resultLabel.setText("sin(" + number.toString() + ") = " + String.valueOf(Math.sin(number.floatValue()/180.0*Math.PI)));
    }

    private static void createAndShowGUI() {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        SinusCalculator converter = new SinusCalculator();
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
