Screenshot of a snippet from my code
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class GUI extends Frame implements ActionListener
{
private TextField buy = new TextField(30);
private Button appl;
public GUI(){
super("GUI");
setLayout(new FlowLayout());
setSize(400,150);
setTitle("Stock Market Exchange");
setVisible(true);
aapl = new Button("Buy AAPL share");
add(aapl);
aapl.setEnabled(true);
aapl.setBounds(35,6,112,36);
aapl.setBackground(new Color(214,217,223));
aapl.setForeground(new Color(0,0,0));
aapl.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
createAAPLshare();
}
});
add(buy);
aapl.setVisible(true);
}
“public class GUI extends Frame implements ActionListener” - 不断返回错误,因为GUI不是抽象的,不能覆盖java.awt.event.ActionListener中的actionPerformed(java.awt.event.ActionEvent)。但我似乎无法弄清楚这个错误在哪里以及为什么一直在返回。我试图搜索各种方法来修复它,但仍然存在编译器错误。我错过了什么?
它只是意味着你需要为actionPerformed()提供一个实现。 ActionListener是一个接口,所以如果你在一个类中实现它,你应该在你的类中的某个地方填充接口中的任何方法。这个页面应该为您提供更多信息:https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
你错过了错误告诉你的内容:actionPerformed()
方法的具体实现(因为你实现了ActionListener接口)
在GUI类中提供此方法的实现(并在GUI类的一个或多个组件中相应地使用它),或者如果您不需要它,请从类中删除implements ActionListener
部分
对于前者,在类中添加方法的实现:
public void actionPerformed(ActionEvent evt){
createAAPLshare();
}
然后在相关部分:
aapl.addActionListener(this);
对于后者,只需保留代码,但从类签名中删除implements ActionListener
无论哪种方式都可以,你选择