Código Java para la calculadora científica GUI

public class Gui extends JFrame {
    private static JButton [] button = new JButton[36];
    private static TextField tf;
    private JPanel panel;
    private JPanel panel1;



public Gui(){
    super("Scientific Calculator");
    panel = new JPanel();
    panel1 = new JPanel(new GridLayout(0,4));

    tf = new TextField(20);
    tf.setEditable(false);
    panel.add(tf);

    button[0]=new JButton("Rad/Deg");
    button[1]=new JButton("x!");
    button[2]=new JButton("sqrt");
    button[3]=new JButton("sin");
    button[4]=new JButton("cos");
    button[5]=new JButton("tan");
    button[6]=new JButton("ln");
    button[7]=new JButton("log");
    button[8]=new JButton("1/x");
    button[9]=new JButton("e^x");
    button[10]=new JButton("x^2");
    button[11]=new JButton("y^x");
    button[12]=new JButton("|x|");
    button[13]=new JButton("pi");
    button[14]=new JButton("e");

    button[15]=new JButton("C");
    button[16]=new JButton("(");
    button[17]=new JButton(")");
    button[18]=new JButton("%");
    button[19]=new JButton("/");
    button[20]=new JButton("7");
    button[21]=new JButton("8");
    button[22]=new JButton("9");
    button[23]=new JButton("*");
    button[24]=new JButton("4");
    button[25]=new JButton("5");
    button[26]=new JButton("6");
    button[27]=new JButton("-");
    button[28]=new JButton("1");
    button[29]=new JButton("2");
    button[30]=new JButton("3");
    button[31]=new JButton("+");
    button[32]=new JButton(".");
    button[33]=new JButton("0");
    button[34] =new JButton("+/-");
    button[35] =new JButton("=");



    for(int i = 0; i<button.length;i++){
        panel1.add(button[i]);
    }


    panel.add(panel1);
    add(panel);

    HandlerClass handler = new HandlerClass();
    for(int i = 0; i<button.length;i++){
        button[i].addActionListener(handler);
    }

}
private class HandlerClass implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        double num1 = 0,num2;

        String alreadyDisplayed = tf.getText();
        String toDisplay = "";

        if(e.getSource()==button[33]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[33].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[28]){
             alreadyDisplayed = tf.getText();
             toDisplay = alreadyDisplayed + (button[28].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[29]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[29].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[30]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[30].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[24]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[24].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[25]){
            alreadyDisplayed = tf.getText();
            toDisplay = (button[25].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[26]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[26].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[20]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[20].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[21]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[21].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[22]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[22].getText());
            tf.setText(toDisplay);
        }
        if(e.getSource()==button[31]){
            alreadyDisplayed = tf.getText();
            toDisplay = alreadyDisplayed + (button[31].getText());
            tf.setText(toDisplay);
        }
Handsome Hare