gpt4 book ai didi

java - ActionListener 是抽象的并且不会覆盖抽象方法 actionPerformed——尽管包含那个方法

转载 作者:行者123 更新时间:2023-11-29 07:54:25 24 4
gpt4 key购买 nike

所以我收到错误 Class is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener

我知道这个错误的来源,但让我困惑的是我有那个方法。

public static ActionListener taskPerformer = new ActionListener(){
public void actionPerformed(ActionEvent e){
Clock cl = new Clock();
if(seconds<59){
seconds++;
}else{
seconds=0;
if(minutes<59){
minutes++;
}else{
minutes=0;
if(hours<12){
hours++;
}else{
hours=0;
}
}
}

cl.repaint();
}
};'

不太清楚发生了什么。有什么帮助吗?提前致谢。

编辑:上下文包括导入和相关方法

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Object.*;
import java.text.DecimalFormat;
import java.awt.geom.*;


public class Clock extends JFrame implements ActionListener{
public static int seconds = 0;
public static int minutes = 0;
public static int hours = 9;

public static ActionListener taskPerformer = new ActionListener(){
public void actionPerformed(ActionEvent e){
Clock cl = new Clock();
if(seconds<59){
seconds++;
}else{
seconds=0;
if(minutes<59){
minutes++;
}else{
minutes=0;
if(hours<12){
hours++;
}else{
hours=0;
}
}
}

cl.repaint();
}
};
public static Timer timer = new Timer(1000, taskPerformer);

public static void main(String[] args){
Clock cl = new Clock();
init();
SwingUtilities.invokeLater(new Runnable(){
public void run() {
createAndShowGUI();
}
});
}
public static void init(){
timer.start();
}
public Clock() {
super("Clock");
timer.addActionListener(this);

}'

最佳答案

问题不在您发布的原始代码片段中。您的类 Clock 没有实现 actionPerformed()taskPerformer 对象可以。但是代码提示 taskPerformer 是一个 ActionListener 而 Clock 不是。

此外,您似乎没有在任何地方使用 taskPerformer 那么为什么需要匿名类。您可以在 Clock 中定义 actionPerformed() 并完成它。

我看到有两种方法可以解决这个问题。 (为了使技术更清晰,我省略了一些不相关的代码)。

选项 1 - 使用时钟作为监听器

    public class Clock extends JFrame implements ActionListener {
public static int seconds = 0;
public static int minutes = 0;
public static int hours = 9;

public void actionPerformed(ActionEvent e) {
// code
}

public Timer timer;

public Clock() {
super("Clock");
timer = new Timer(1000, this);
timer.addActionListener(this);
}
}

选项 2 - 使用匿名监听器

    public class Clock extends JFrame {
public static int seconds = 0;
public static int minutes = 0;
public static int hours = 9;

public static ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent e) {
// insert code here
}
};

public static Timer timer = new Timer(1000, taskPerformer);

public Clock() {
super("Clock");
timer.addActionListener(taskPerformer);
}
}

关于java - ActionListener 是抽象的并且不会覆盖抽象方法 actionPerformed——尽管包含那个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com