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

@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

ItemListener はインターフェイスであるため、ItemListener を実装するということは、Chapter5Debug で実装を提供する必要があることを意味します。

また

Chapter5Debug を抽象化して、Chapter5Debug を継承するクラスで実装を提供できます。

重要なのは、インターフェースを実装する場合、実装を提供しないことで逃げることはできないということです。それ自体を提供するか、子クラスに運ぶ必要があります。

于 2014-01-23T00:37:19.450 に答える
0

Chapter5Debug 内に itemStateChanged(ItemEvent) を実装する必要があります

サンプルコード

public class Chapter5Debug extends Frame 実装 ItemListener{

// 初期化が行われる場所

チェックボックス.addItemListener(これ);

public void itemStateChanged(ItemEvent e) {

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

}

}

于 2013-07-23T02:57:30.130 に答える