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,不重写抽象方法actionPerformed(ActionEvent)在ActionListener public class QuadraticSolver extends Frame implements ActionListener, WindowListener”
QuadraticSolver
abstract
actionPerformed(ActionEvent)
ActionListener
public class QuadraticSolver extends Frame implements ActionListener, WindowListener
我不知道该怎么做。我尝试在所有ActionListener事件之前添加@Override,但仍然无法正常工作。
既然QuadraticSolver实施ActionListener,就应该实施actionPerformed。
actionPerformed
您在匿名类中实现了该方法。
为了解决这个问题,无论是添加的实现 actionPerformed来QuadraticSolver或不要求QuadraticSolver实现该接口。