类不是抽象的,也不会覆盖抽象方法AWT程序

import java.awt.*; import java.awt.event.*; public class QuadraticSolver extends Frame implements ActionListener, WindowListener { private TextField tfX2; private TextField tfX; private TextField tfNum; private TextField tfVal1; private TextField tfVal2; private TextField tfRoots; private Label lblX2; private Label lblX; private Label lblNum; private Label lblVal1; private Label lblVal2; private Label lblRoots; private Button btnCheckRoots; private Button btnCalc; private Button btnClear; double a = 0, b = 0, c = 0; double Val1 = 0, Val2 = 0, Discriminant = 0; String StrVal1, StrVal2; public QuadraticSolver() { Panel panelX2Comp = new Panel(new FlowLayout()); { lblX2 = new Label("Enter Co-Efficient Of X^2:"); panelX2Comp.add (lblX2); tfX2 = new TextField("", 20); tfX2.setEditable(true); panelX2Comp.add(tfX2); } Panel panelXComp = new Panel(new FlowLayout()); { lblX = new Label("Enter Co-Efficient Of X:"); panelXComp.add(lblX); tfX = new TextField("", 20); tfX.setEditable(true); panelXComp.add(tfX); } Panel panelNumComp = new Panel(new FlowLayout()); { lblNum = new Label("Enter Number:"); panelNumComp.add(lblNum); tfNum = new TextField("", 20); tfNum.setEditable(true); panelNumComp.add(tfNum); } Panel panelButtons = new Panel(new FlowLayout()); { btnCalc = new Button("Calculate"); btnCalc.setEnabled(false); panelButtons.add(btnCalc); { btnCalc.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { a = Double.parseDouble(tfX2.getText()); b = Double.parseDouble(tfX.getText()); c = Double.parseDouble(tfNum.getText()); Val1 = (-b + Math.sqrt(Discriminant)) / (2 * a); Val2 = (-b - Math.sqrt(Discriminant)) / (2 * a); StrVal1 = String.valueOf(Val1); StrVal2 = String.valueOf(Val2); tfVal1.setText(StrVal1); tfVal2.setText(StrVal2); tfX2.setText(""); tfX.setText(""); tfNum.setText(""); btnCalc.setEnabled(false); } } ); } btnCheckRoots = new Button("Nature Of Roots"); panelButtons.add(btnCheckRoots); { btnCheckRoots.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { a = Double.parseDouble(tfX2.getText()); b = Double.parseDouble(tfX.getText()); c = Double.parseDouble(tfNum.getText()); Discriminant = (b*b) - (4*(a*c)); if (Discriminant == 0) { tfRoots.setText("Equal"); btnCalc.setEnabled(true); } else if (Discriminant < 0) { tfRoots.setText("Imaginary"); } else { tfRoots.setText("Real, Distinct"); btnCalc.setEnabled(true); } } } ); } btnClear = new Button("Clear"); panelButtons.add(btnClear); { btnClear.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { a = 0; b = 0; c = 0; Val1 = 0; Val2 = 0; Discriminant = 0; tfX2.setText(""); tfX.setText(""); tfNum.setText(""); tfVal1.setText(""); tfVal2.setText(""); tfRoots.setText(""); } } ); } } Panel panelRoots = new Panel(new FlowLayout()); { lblRoots = new Label ("Nature Of Roots:"); panelRoots.add(lblRoots); tfRoots = new TextField("", 20); tfRoots.setEditable(false); panelRoots.add(tfRoots); } Panel panelValues = new Panel(new FlowLayout()); { lblVal1 = new Label("First Value:"); panelValues.add(lblVal1); tfVal1 = new TextField("", 10); tfVal1.setEditable(false); panelValues.add(tfVal1); lblVal2 = new Label("Second Value:"); panelValues.add(lblVal2); tfVal2 = new TextField("", 10); tfVal2.setEditable(false); panelValues.add(tfVal2); } setLayout(new FlowLayout()); // "this" Frame sets to BorderLayout add(panelX2Comp); add(panelXComp); add(panelNumComp); add(panelButtons); add(panelRoots); add(panelValues); setTitle("Matrix Multiplier"); // "this" Frame sets title setSize(400, 200); // "this" Frame sets initial size setVisible(true); addWindowListener(this); } @Override public void windowClosing(WindowEvent e) { System.exit(0); // Terminate the program } @Override public void windowOpened(WindowEvent e) { } @Override public void windowClosed(WindowEvent e) { } @Override public void windowIconified(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { } @Override public void windowActivated(WindowEvent e) { } @Override public void windowDeactivated(WindowEvent e) { } public static void main(String args[]) { new QuadraticSolver(); } } 

所以这是我的代码。 它给我一个错误说“QuadraticSolver.java:4:错误: QuadraticSolver不是abstract ,并且不会覆盖ActionListener抽象方法actionPerformed(ActionEvent) public class QuadraticSolver extends Frame implements ActionListener, WindowListener

我不知道该怎么做。 我尝试在所有ActionListener事件之前添加@Override,仍然不起作用。

由于QuadraticSolver实现了ActionListener ,因此它应该实现actionPerformed

您在匿名类中实现了该方法。

要解决此问题,请将actionPerformed的实现添加到QuadraticSolver或者不要求QuadraticSolver实现该接口。

我注意到你为你的按钮的actionlistener实现了actionperformed。当你声明要实现一个接口时,你需要在你的类中使用一个单独的actionperformed方法。 喜欢

 public class QuadraticSolver implements ActionListener{ @Override public void actionPerformed(ActionEvent){} } 

因为你已经使用了ActionListener所以你必须覆盖它的actionPerformed(ActionEvent ae)方法,否则它会给出这个错误。