1

を持つLWUITクラスがありList、リスト自体にはラベルがアイテムとして含まれています。

ラベルに焦点を合わせたときに、単にリストのアクションを作成するという私の考えです。

クラスをコンパイルすると、次のエラーが発生します。

匿名の Midlet$2 は抽象的ではなく、com.sun.lwuit.events.FocusListener の抽象メソッド focusLost(com.sun.lwuit.Component) をオーバーライドしません。

String s = ("Focus me");
final com.sun.lwuit.Form f  = new com.sun.lwuit.Form();
final com.sun.lwuit.List D  = new com.sun.lwuit.List();
final com.sun.lwuit.Label l = new com.sun.lwuit.Label(s);

D.addItem(l);
f.addComponent(D);

D.addFocusListener(new com.sun.lwuit.events.FocusListener () {

    public void focusGained(com.sun.lwuit.Label l)
    {
    }
    public void focusLost(com.sun.lwuit.Label l)
    {
    }

});
4

1 に答える 1

4

コードの問題点の詳細は​​すべてエラー メッセージに記載されています。注意深く読む必要があります。見て、

  1. wordanonymousと sign $inMidlet$2は、匿名クラスに問題があることを示しています。
    コード スニペットには、そのようなクラスが 1 つだけあります。new com.sun.lwuit.events.FocusListener

  2. does not override abstract method focusLost(com.sun.lwuit.Component)匿名クラスがそのような署名を持つメソッドの定義を欠いていることを意味します (署名はメソッド名とパラメーターの型です)

  3. その匿名クラスで定義したメソッドを詳しく見てください。メソッド コンパイラが不平を言っているものはありますか?

  4. 一見すると、そこにあると思うかもしれませんがfocusLost、(!) 署名はメソッド名だけでなく、パラメーターの型でもあることを覚えておく必要があります。(!) よく見ると、そのパラメーターの型は、エラー メッセージで必須と言われているものではありません。

匿名クラスにはメソッドfocusLost(com.sun.lwuit.Label)がありますが、エラー メッセージには、異なるシグネチャ (異なるパラメーター タイプ) のメソッドが必要であることが示されています - focusLost(com.sun.lwuit.Component)

このコンパイル エラーを修正するには、new com.sun.lwuit.events.FocusListener必要なシグネチャを持つメソッドを匿名クラスに追加します: focusLost(com.sun.lwuit.Component).

于 2013-05-01T10:42:44.150 に答える