java - 当我按下 Applet 按钮时,为什么会收到抽象类错误?

标签 java swing applet awt abstract-class

我正在尝试创建一个按钮,一旦按下该按钮就会删除旧屏幕并绘制新内容。我计划画一个房间,然后在门上添加一个按钮。当按下门上的按钮时,它应该删除旧屏幕并绘制一个新房间。

为什么我收到此错误:

Test is not abstract and does not override abstract method 
actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener

相关代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.JComponent.*;

public class Test extends JFrame implements ActionListener{

    private JLabel msg;
    private final String ButtonText = "Room";

    public void init()
    {

        Container contentHolder = getContentPane();

        contentHolder.setLayout(new BorderLayout(18,18));

        msg = new JLabel("");
        contentHolder.add(msg, BorderLayout.CENTER);

        JPanel buttonPanel = new JPanel();

        JButton myButton = new JButton(ButtonText);

        myButton.addActionListener(this);

        buttonPanel.add(myButton);

        contentHolder.add(buttonPanel, BorderLayout.SOUTH);

    }

    public void actionPerformed(ActionEvent evt, Graphics g)
    {


        String command = evt.getActionCommand();

        if(ButtonText.equals(command))
        {
        Dimension d = getSize();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, d.width, d.height);
        house.drawRoom(g);
        }
    }
}

class house extends Test
{

    public static void drawRoom(Graphics g)
    {
        Expo.drawCircle(g,100,100,25);
    }

}

最佳答案

您收到错误的原因是您没有带有签名 actionPerformed(java.awt.event.ActionEvent) 的方法。 Abstract 关键字意味着父类(super class)没有为该函数定义任何类型的默认实现,因此由您来定义它。否则,您需要声明您的类抽象,告诉任何扩展您的类的类它们需要实现它。

您确实有一个方法 public void actionPerformed(ActionEvent evt, Graphics g),但这与 public void actionPerformed(ActionEvent evt) 不同。包含 actionEvent 函数使用的库需要能够仅使用事件来调用它,而不是使用事件和其他一些参数来调用它。

避免这种情况的一种方法是在您认为应该覆盖父类(super class)或模板函数的每个类方法上放置 @Override 注释。这样,它会告诉您 actionPerformed(ActionEvent evt, Graphics g) 实际上并没有覆盖任何内容。

关于java - 当我按下 Applet 按钮时,为什么会收到抽象类错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16716508/

相关文章:

java - SwingWorker process() 更新 gui Generics

带有文本和按钮的 Java 对话框

java - 不可能的Java内存一致性错误

java - JRE 1.7u45 无法加载包含一些未签名条目的小程序

java - 如何从 url 下载文件而不将其保存到磁盘?

java - Mockito 对象为 null

java - maven-jar-plugin 与 maven-source-plugin 不起作用

java - 单击单选按钮时如何显示时间选择器对话框?

Java在小程序中显示图像

java - 打印小程序的权限