resueltos metodos metodo interfaces implementacion figura ejercicios ejemplo clases clase abstractos abstracto abstractas abstracta java user-interface compiler-errors awt abstract-class

java - metodos - metodo abstracto c#



La clase no es abstracta y no anula el método abstracto Programa AWT (2)

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(); } }

Entonces este es mi código me da un error que dice "QuadraticSolver.java:4: error: QuadraticSolver no es abstracto y no anula el método abstracto actionPerformed (ActionEvent) en ActionListener public class QuadraticSolver extends Frame implementa ActionListener, WindowListener"

No tengo ni idea de qué hacer. Intenté agregar @Override antes de todos los eventos de ActionListener, Still no funciona.


Como QuadraticSolver implementa ActionListener , debe implementar actionPerformed .

Implementaste ese método en una clase anónima.

Para resolverlo, agregue una implementación de actionPerformed a QuadraticSolver o no requiera que QuadraticSolver implemente esa interfaz.


Noté que implementaba acciones realizadas para su operador de acción de su botón. Cuando declara que va a implementar una interfaz, necesita un método de acción por separado en su clase. me gusta

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