按钮处理程序不工作。基本Java矩形计算器

按钮处理程序不工作。基本Java矩形计算器,java,Java,因此,我一直在学习一个基本的JavaGUI计算器教程。无论出于什么原因,当我点击Calculate按钮时,控制台会给出一个巨大的错误列表。我怎样才能解决这个问题 代码: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class RectangleProgram extends JFrame { private static final int WIDTH = 400; private stat

因此,我一直在学习一个基本的JavaGUI计算器教程。无论出于什么原因,当我点击Calculate按钮时,控制台会给出一个巨大的错误列表。我怎样才能解决这个问题

代码:

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

public class RectangleProgram extends JFrame {

private static final int WIDTH = 400;
private static final int HEIGHT = 300;

private JLabel lengthL, widthL, areaL;
private JTextField lengthTF, widthTF, areaTF;
private JButton calculateB, exitB;

//Button handlers
private CalculateButtonHandler cbHandler;
private ExitButtonHandler ebHandler;

public RectangleProgram(){
    lengthL = new JLabel("Enter the length: ", SwingConstants.RIGHT);
    widthL = new JLabel("Enter the width: ", SwingConstants.RIGHT);
    areaL = new JLabel("Area: ", SwingConstants.RIGHT);

    lengthTF = new JTextField(10);
    widthTF = new JTextField(10);
    areaTF = new JTextField(10);


    //New buttons

    calculateB = new JButton("Calculate");
    cbHandler = new CalculateButtonHandler();
    calculateB.addActionListener(cbHandler);
    exitB = new JButton("Exit");
    ebHandler = new ExitButtonHandler();
    exitB.addActionListener(ebHandler);

    setTitle("Sample Title: Area of a rectangle");
    Container pane = getContentPane();
    pane.setLayout(new GridLayout(4, 2));

    //Adding wings and things... well just things... no wings :(

    pane.add(lengthL);
    pane.add(lengthTF);
    pane.add(widthL);
    pane.add(widthTF);
    pane.add(areaL);
    pane.add(areaTF);
    pane.add(calculateB);
    pane.add(exitB);

    setSize(WIDTH, HEIGHT);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

}


private class CalculateButtonHandler implements ActionListener{
    public void actionPerformed(Action e){
        double width, length, area;

        length = Double.parseDouble(lengthTF.getText());
        width = Double.parseDouble(widthTF.getText());
        area = length * width;

        areaTF.setText("" + area);
    }
}

public class ExitButtonHandler implements ActionListener{

    public void actionPerformed(Action e){
        System.exit(0);

    }
}

public static void main(String[] args){
    RectangleProgram rectObj = new RectangleProgram();
}
}

错误:

线程“AWT-EventQueue-0”java.lang中出现异常。错误:未解决的编译>问题: 类型RectangleProgram.CalculateButtonHandler必须实现>继承的抽象方法ActionListener.actionPerformed(ActionEvent)

at>RectangleProgram$CalculateButtonHandler.actionPerformed(RectangleProgram.java:5>9) 在javax.swing.AbstractButton.fireActionPerformed(未知源) 位于javax.swing.AbstractButton$Handler.actionPerformed(未知源) 在javax.swing.DefaultButtonModel.fireActionPerformed(未知源) 位于javax.swing.DefaultButtonModel.setPressed(未知源) 位于javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知源代码) 位于java.awt.Component.ProcessMouseeEvent(未知源) 位于javax.swing.JComponent.ProcessMouseeEvent(未知源) 位于java.awt.Component.processEvent(未知源) 位于java.awt.Container.processEvent(未知源) 位于java.awt.Component.dispatchEventImpl(未知源) 位于java.awt.Container.dispatchEventImpl(未知源) 位于java.awt.Component.dispatchEvent(未知源) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源) 位于java.awt.LightweightDispatcher.dispatchEvent(未知源) 位于java.awt.Container.dispatchEventImpl(未知源) 位于java.awt.Window.dispatchEventImpl(未知源) 位于java.awt.Component.dispatchEvent(未知源) 位于java.awt.EventQueue.dispatchEventImpl(未知源) 位于java.awt.EventQueue.access$500(未知源) 在java.awt.EventQueue$3.run处(未知源) 在java.awt.EventQueue$3.run处(未知源) 位于java.security.AccessController.doPrivileged(本机方法) at>java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(U>nknown源代码) at>java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(U>nknown源代码) 在java.awt.EventQueue$4.run处(未知源) 在java.awt.EventQueue$4.run处(未知源) 位于java.security.AccessController.doPrivileged(本机方法) at>java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(U>nknown源代码) 位于java.awt.EventQueue.dispatchEvent(未知源) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源) 位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源) 位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源) 位于java.awt.EventDispatchThread.pumpEvents(未知源) 位于java.awt.EventDispatchThread.pumpEvents(未知源) 位于java.awt.EventDispatchThread.run(未知源)


在actionPerformed方法中,在CalculateButtonHandler和ExitButtonHandle类中将参数从“Action e”更改为“ActionEvent e”


如果查看接口方法的详细信息,您会注意到actionPerformed方法将ActionEvent作为参数。由于您在类中实现接口,因此需要重写该方法。

请在此处发布代码和错误。在actionPerformed上添加@override注释,并确保其具有与摘要相同的签名和参数method@AndrewL. 我添加了一个覆盖,但它对程序没有任何作用,我说它与超类的抽象方法具有相同的签名和参数。你没有那么做。您必须输入与前面指出的相同的参数。我对Java相当陌生。您能解释一下为什么需要进行此更改吗?您必须拥有与超类方法相同的参数才能正确重写子类中的方法。您没有相同的参数,因此该方法无法完成它的工作。