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