无法获取公共类GUI扩展框架实现ActionListener的工作

时间:2019-03-08 13:01:11

标签: java oop user-interface actionlistener abstract

Try

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

“公共类GUI扩展了Frame实现的ActionListener”-一直返回错误,因为GUI不是抽象的,并且不能覆盖java.awt.event.ActionListener中的actionPerformed(java.awt.event.ActionEvent)。 但是我似乎无法弄清楚该错误在何处以及为何不断返回。我尝试搜索各种方法来修复它,但是仍然存在编译器错误。我想念什么?

2 个答案:

答案 0 :(得分:0)

这仅意味着您需要为actionPerformed()提供一个实现。 ActionListener是一个接口,因此,如果您在类中实现它,则应该在该类的某个地方填写接口中的任何方法。该页面应该为您提供更多信息:https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

答案 1 :(得分:0)

您恰恰错过了错误告诉您的内容:actionPerformed()方法的具体实现(因为您实现了ActionListener接口)

要么在您的GUI类中提供此方法的实现(然后在您的GUI类的一个或多个组件中相应地使用它),或者在不需要时从类中删除implements ActionListener部分< / p>

对于前者,在您的类中添加方法的实现:

public void actionPerformed(ActionEvent evt){
            createAAPLshare();
}

然后在相关部分:

aapl.addActionListener(this);

对于后者,只需保留您的代码,但从类签名中删除implements ActionListener

无论哪种方法,您都可以选择