0

我是 Java 新手,我遇到了一个我无法弄清楚的编译错误。

Chapter5Debug is not abstract and does not override abstract method itemStateChanged(java.awt.event.ItemEvent) in java.awt.event.ItemListener

public class Chapter5Debug extends Frame implements ItemListener
       ^

谁能帮我理解我需要做些什么来解决这个问题?

感谢帮助!

希拉

4

4 回答 4

1

您必须记住,如果 ItemListener 是抽象的,那么您将需要实现 ItemListener 中的所有方法。如果你想保持你当前的结构,你可以在你的 Chapter5Debug 类中添加一个空的 itemStateChanged 方法。

于 2013-07-23T02:53:49.920 回答
1

详细说明@kevolution的答案:

public class Chapter5Debug extends Frame implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
        // Write your method here
    }
}

抽象类与普通类一样,但可以包含一些“存根”或抽象方法。这些是需要由扩展抽象类的类来实现的方法。在这种情况下,itemStateChanged()被标记为抽象,意味着您需要声明它。

当您编写需要调用者以某种方式提供胆量的代码时,抽象类很有用。在这种情况下,Java 不知道当项目的状态发生变化时该做什么,但它可以做很多其他的事情。其他东西在Frame类中的常规方法中,这些方法调用该itemStateChanged()方法 - 然后它将调用您自己的处理代码。

于 2013-07-23T02:59:07.237 回答
0

您需要在 Chapter5Debug 中实现 itemStateChanged(ItemEvent)

示例代码

公共类 Chapter5Debug 扩展 Frame 实现 ItemListener{

//初始化发生的地方

复选框.addItemListener(this);

公共无效 itemStateChanged(ItemEvent e) {

if (e.getStateChange() == ItemEvent.SELECTED) {
    label.setVisible(true);
    ...
} else {
    label.setVisible(false);
}

}

}

于 2013-07-23T02:57:30.130 回答
0

ItemListener 是一个接口,因此实现 ItemListener 意味着您必须在 Chapter5Debug 中提供实现

或者

您可以将Chapter5Debug 抽象化,然后在继承Chapter5Debug 的类中提供实现。

关键是,如果你实现了一个接口,你就不能通过不提供实现来逃避。您要么必须自己提供它,要么将其带到子类。

于 2014-01-23T00:37:19.450 回答