运行计算器界面时点击按钮没有反应

package com;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.DecimalFormat;
import java.util.EventListener;
import java.awt.event.ActionEvent;
public class viewx extends JFrame {
    public JTextField textField1;
    public JTextField resulttext;
    public JTextField textField;
    public JTextField textField2;
    public JTextArea textArea;
    public viewx(){
        init();
    }
    public void init() {
        setTitle("计算器");
        setResizable(false);
        setBounds(100,100,600,280);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JPanel viewPanel=new JPanel();
        JPanel panel=new JPanel();
        getContentPane().add(panel,BorderLayout.WEST);
        final BorderLayout border=new BorderLayout();
        border.setVgap(10);
        border.setHgap(10);
        panel.setLayout(border);
        panel.add(viewPanel,BorderLayout.NORTH);
        JTextField textField=new JTextField();
        textField.setEditable(true);
        textField.setHorizontalAlignment(SwingConstants.CENTER);
        textField.setColumns(12);
        JTextField textField1=new JTextField();
        textField1.setHorizontalAlignment(SwingConstants.CENTER);
        textField1.setColumns(5);
        textField1.setEditable(true);
        JTextField textField2=new JTextField();
        textField2.setHorizontalAlignment(SwingConstants.CENTER);
        textField2.setColumns(12);
        textField2.setEditable(true);
        viewPanel.add(textField);
        viewPanel.add(textField1);
        viewPanel.add(textField2);
        final JPanel buttonPanel=new JPanel();
        final GridLayout gridLayout=new GridLayout(4,0);
        gridLayout.setHgap(10);
        gridLayout.setVgap(10);
        buttonPanel.setLayout(gridLayout);
        panel.add(buttonPanel,BorderLayout.CENTER);
       
```java
 String[][]names= {{"1","2","3","/","c"},{"4","5","6","*","退格"},{"7","8","9","-","sqrt"},{"0","+/-",".","+","="}};
        JButton[][]buttons=new JButton[4][5];
        for(int row=0;row<names.length;row++) {
            for(int col=0;col<names.length+1;col++) {
                buttons[row][col]=new JButton(names[row][col]);
                buttonPanel.add(buttons[row][col]);
            }
        }
        for(int row=0;row<names.length;row++) {
            for(int col=0;col<names.length+1;col++) {
                buttons[row][col].addActionListener(new CalculatorController());
            }
        }

    final JLabel leftLabel=new JLabel();
    leftLabel.setPreferredSize(new Dimension(10,0));
    panel.add(leftLabel,BorderLayout.WEST);
    final JLabel rightLabel=new JLabel();
    rightLabel.setPreferredSize(new Dimension(10,0));
    panel.add(rightLabel,BorderLayout.EAST);
    final JPanel panelx=new JPanel();
    getContentPane().add(panelx,BorderLayout.CENTER);
    final JPanel viewPanel1=new JPanel();
    panelx.add(viewPanel1,BorderLayout.NORTH);
    JTextField resulttext=new JTextField();
    resulttext.setEditable(false);
    resulttext.setHorizontalAlignment(SwingConstants.CENTER);
    resulttext.setColumns(18);
    viewPanel1.add(resulttext);
    JTextArea textArea=new JTextArea();
    textArea.setColumns(15);
    textArea.setRows(9);
    textArea.setLineWrap(true);
    final JScrollPane scrollPane=new JScrollPane();
    scrollPane.setViewportView(textArea);
    panelx.add(scrollPane,BorderLayout.CENTER);
    final JPanel buttonPanel1=new JPanel();
    panelx.add(buttonPanel1,BorderLayout.SOUTH);
    final JButton aButton=new JButton();
    aButton.setText("保存");
    aButton.addActionListener(new Calculate());
    buttonPanel1.add(aButton);
    final JButton bButton=new JButton();
    bButton.setText("查看");
    bButton.addActionListener(new Calculate());
    buttonPanel1.add(bButton);
    final JButton cButton=new JButton();
    cButton.setText("清除");
    cButton.addActionListener(new Calculate());
    buttonPanel1.add(cButton);
}
class Calculate implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        JButton button=(JButton)e.getSource();
        String clickStr = e.getActionCommand();
        if(clickStr.equals("清除")) {                                 //点击“清除”按键*******
            textArea.setText("");
        }else if(clickStr.equals("保存")){                            //点击“保存”**********
            String s=textArea.getText();
            try {
                OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("C:\\Calculator\\result.txt"));
                osw.write(s);
                osw.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }else if(clickStr.equals("查看")){                             //点击“查看”*********
            char[] chs = new char[2048];
            try {
                InputStreamReader isr = new InputStreamReader(new FileInputStream("C:\\Calculator\\result.txt"));
                int len;
                while ((len = isr.read(chs))!=-1){
                    textArea.append(String.valueOf(chs));
                }
                isr.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

}

CalculateController:
package com;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Objects;
import javax.swing.JButton;
public class CalculatorController extends CalculatorModel implements ActionListener{
    CalculatorModel model=new CalculatorModel();
    viewx view=new viewx();
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton) e.getSource();
        String buttonName = e.getActionCommand();
        if (buttonName.equals("=")) {
            String data = view.textArea.getText();
            view.textArea.setText(data + view.textField.getText() + view.textField1.getText() + view.textField2.getText() + "=" + view.resulttext.getText() + "\n");
        }
        if ("0123456789.".contains(buttonName)) {//统一判断当输入了数字时,调用模型的相关方法//
            if (view.textField1.getText().equals(""))
                model.pressNumber1(buttonName);
            else
                model.pressNumber2(buttonName);
        }
        if (buttonName.equals("退格")) {
            if (view.textField2.getText().equals(""))
                model.pressBackspace1();
            else model.pressBackspace2();
        } else if (buttonName.equals("C"))
            model.pressC();
        if (buttonName.equals("sqrt") || buttonName.equals("+/-"))//按下按钮形成对计算器的相关运算//
            model.singleOperator(buttonName);
        else if (buttonName.equals("+"))
            view.textField1.setText("+");
        else if (buttonName.equals("-"))
            view.textField1.setText("-");
        else if (buttonName.equals("*"))
            view.textField1.setText("*");
        else if (buttonName.equals("/"))
            view.textField1.setText("/");
        model.calculate();
    }
}
CalculateModel:
package com;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
public class CalculatorModel extends viewx{
    public  double num=0.0;
    public  String operator="+";
    public  boolean f=true;//判断用户是否按下了按钮//
    public  boolean flag=true;//判断文本框内输入数字的正负//
    public double calculate() {
        if(textField1.equals("+"))
            num=getNumberFromText1()+getNumberFromText2();
        else if(textField1.equals("-"))
            num=getNumberFromText1()-getNumberFromText2();
        else if(textField1.equals("*"))
            num=getNumberFromText1()*getNumberFromText2();
        else if(textField1.equals("/")) {
            if(getNumberFromText2()==0.0) {
                flag=false;
                resulttext.setText("除数不能为0");
            }else num=getNumberFromText1()/getNumberFromText2();
        }
        return num;
    }
    public double getNumberFromText1() {
        // TODO Auto-generated method stub
        double result=0;
        try {
            result=Double.parseDouble(textField.getText());
        }catch(NumberFormatException ignored) {

        }
        return result;
    }
    public double getNumberFromText2() {
        // TODO Auto-generated method stub
        double result=0;
        try {
            result=Double.parseDouble(textField2.getText());
        }catch(NumberFormatException ignored) {

        }
        return result;
    }
    public void pressNumber1(String names) {//按位输入第一个文本框的数字//
        if(f) {
            textField.setText(names);
        }else if(names.equals(".")&&(!textField.getText().contains("."))) {
            textField.setText(textField.getText()+".");
        }else if(!names.equals(".")) {
            textField.setText(textField.getText()+names);
        }
        f=false;
    }
    public void pressNumber2(String names) {//按位输入第二个文本框的数字//
        if(f) {
            textField2.setText(names);
        }else if(names.equals(".")&&(!textField2.getText().contains("."))) {
            textField2.setText(textField2.getText()+".");
        }else if(!names.equals(".")) {
            textField2.setText(textField2.getText()+names);
        }
        f=false;
    }
    public void pressBackspace1() {//处理当按下C键时,第一个文本框输入的数字回退一位//
        String text=textField.getText();
        int i=text.length();
        if(i>0) {
            text=text.substring(0, i-1);
            if(text.length()==0) {
                textField.setText("");
                f=true;
                operator="=";
            }else textField.setText(text);
        }
    }
    public void pressBackspace2() {//处理当按下C键时,第二个文本框输入的数字回退一位//
        String text=textField2.getText();
        int i=text.length();
        if(i>0) {
            text=text.substring(0, i-1);
            if(text.length()==0) {
                textField2.setText("");
                f=true;
                operator="=";
            }else textField.setText(text);
        }
    }
    public void pressC() {
        textField.setText("");
        textField1.setText("");
        textField2.setText("");
        resulttext.setText("");
        operator="=";
    }
    public void singleOperator(String names) {//处理只需要输入一个文本框的数字时的按钮方法//
        operator=names;
        switch(operator) {
            case"sqrt":
                if(num<0) {
                    flag=false;
                    resulttext.setText("根号内不能为负数");
                }else {
                    textField1.setText("sqrt");
                    num=Math.sqrt(getNumberFromText1());
                }
                break;
            case"+/-":
                textField1.setText("+/-");
                num=getNumberFromText1()*(-1);
                if(flag) {
                }
                f=true;
                flag=true;
                break;
        }
    }
    public void omitDecimal(double num) {
        long t1;
        double t2;
        t1=(long)num;
        t2=num-t1;
        if(t2==0) {
            resulttext.setText(String.valueOf(t1));
        }else resulttext.setText(String.valueOf(new DecimalFormat("0.0000000").format(num)));
    }
}

```java


把报错信息展示一下