Java 无法在编译时重写actionPerformed(使用匿名类)。我做错了什么?

Java 无法在编译时重写actionPerformed(使用匿名类)。我做错了什么?,java,event-handling,Java,Event Handling,我已经仔细阅读了之前在同一问题上发布的3个问题,但无法找出我错在哪里。 我正在尝试将按钮(b)的ActionListener实现为- 在编译时,这会给出一个消息,如- MyFrame.java:3:错误:MyFrame不是抽象的,并且不重写ActionListener中的抽象方法actionPerformed(ActionEvent) 类MyFrame扩展框架实现ActionListener ^ 1个错误 完整代码段: import java.awt.*; import java.awt.eve

我已经仔细阅读了之前在同一问题上发布的3个问题,但无法找出我错在哪里。 我正在尝试将按钮(b)的ActionListener实现为-

在编译时,这会给出一个消息,如-

MyFrame.java:3:错误:MyFrame不是抽象的,并且不重写ActionListener中的抽象方法actionPerformed(ActionEvent) 类MyFrame扩展框架实现ActionListener ^ 1个错误

完整代码段:

import java.awt.*;
import java.awt.event.*;
class MyFrame extends Frame implements ActionListener
{
    TextField tf1;
    TextField tf2;
    TextField tf3;
    Button b;
    Panel p;
    MyFrame()
    {
        setSize(400,400);
        setVisible(true);
        p = new Panel();
        tf1 = new TextField(10);
        tf2 = new TextField(10);
        tf3 = new TextField(10);
        b = new Button("+");
        p.add(tf1);
        p.add(tf2);
        p.add(tf3);
        p.add(b);
        add(p);
        b.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e)
            {
                int first= Integer.parseInt(tf1.getText());
                int second= Integer.parseInt(tf2.getText());
                int result= first+second;
                tf3.setText(Integer.toString(result));
            }
        });
    }
    public static void main(String... args)
    {
        new MyFrame();
    }
}

您正在匿名类实例中实现
ActionListener
,但是您还声明
MyFrame
实现了
ActionListener
,而它没有实现


如果希望
MyFrame
直接实现
ActionListener
,请将
actionPerformed
移动为该类的方法。如果没有,请从
MyFrame
声明中删除
implements ActionListener

。谢谢。
import java.awt.*;
import java.awt.event.*;
class MyFrame extends Frame implements ActionListener
{
    TextField tf1;
    TextField tf2;
    TextField tf3;
    Button b;
    Panel p;
    MyFrame()
    {
        setSize(400,400);
        setVisible(true);
        p = new Panel();
        tf1 = new TextField(10);
        tf2 = new TextField(10);
        tf3 = new TextField(10);
        b = new Button("+");
        p.add(tf1);
        p.add(tf2);
        p.add(tf3);
        p.add(b);
        add(p);
        b.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e)
            {
                int first= Integer.parseInt(tf1.getText());
                int second= Integer.parseInt(tf2.getText());
                int result= first+second;
                tf3.setText(Integer.toString(result));
            }
        });
    }
    public static void main(String... args)
    {
        new MyFrame();
    }
}