我是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
^
任何人都可以帮助我了解我需要做些什么来解决这个问题吗?
感谢帮助!
希拉
答案 0 :(得分:1)
你必须记住,如果ItemListener是抽象的,那么你需要实现ItemListener中的所有方法。如果要保留当前结构,可以在Chapter5Debug类中添加一个空的itemStateChanged方法。
答案 1 :(得分:1)
详细说明@kevolution的答案:
public class Chapter5Debug extends Frame implements ItemListener {
public void itemStateChanged(ItemEvent e) {
// Write your method here
}
}
抽象类就像普通类一样,但可以包含一些“存根” - 或抽象 - 方法。这些是需要由扩展抽象类的类实现的方法。在这种情况下,itemStateChanged()
被标记为抽象,这意味着您需要声明它。
当您编写需要调用者以某种方式提供内容的代码时,抽象类很有用。在这种情况下,Java无法知道在项目状态发生变化时该怎么做,但它可以执行大量的其他内容。其他的东西是Frame
类中的常规方法,它们调用itemStateChanged()
方法 - 然后将调用您自己的处理代码。
答案 2 :(得分:0)
你需要在Chapter5Debug
中实现itemStateChanged(ItemEvent)示例代码
public class Chapter5Debug extends Frame implements ItemListener {
//初始化发生的地方
checkbox.addItemListener(本);
public void itemStateChanged(ItemEvent e){
if (e.getStateChange() == ItemEvent.SELECTED) {
label.setVisible(true);
...
} else {
label.setVisible(false);
}
}
}
答案 3 :(得分:0)
ItemListener是一个接口,因此实现ItemListener意味着你要么必须在Chapter5Debug中提供实现
或
你可以将Chapter5Debug抽象化,然后在继承Chapter5Debug的类中提供实现。
Crux就是如果你实现了一个接口,你就无法通过不提供实现而逃脱。要么你必须在那里提供它,要么把它带到儿童班。