Midlet不是抽象的,不会覆盖抽象方法focusLost(com.sun.lwuit.Component)

时间:2013-05-01 09:22:00

标签: java-me lwuit lwuit-list lwuit-label

我有一个LWUIT类,其List,列表本身包含一个Label作为项目。

当我专注于标签时,我的想法就是对列表进行操作。

编译类时出现以下错误:

  

匿名Midlet $ 2不是抽象的,不会覆盖抽象   方法focusLost(com.sun.lwuit.Component)in   com.sun.lwuit.events.FocusListener

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)
    {
    }

});

1 个答案:

答案 0 :(得分:3)

您的代码出现问题的所有详细信息都在错误消息中,您只需仔细阅读即可。看,

  1. 单词anonymous并在$中签名Midlet$2告诉您匿名课程中出现了问题。
    在您的代码段中,只有一个类:new com.sun.lwuit.events.FocusListener

  2. does not override abstract method focusLost(com.sun.lwuit.Component)表示您的匿名类错过了具有此类签名的方法定义(签名是方法名称和参数类型)

  3. 仔细查看您在该匿名类中定义的方法,是否有方法编译器在抱怨?

  4. 乍一看,你可能认为它在那里,有一个名为focusLost的方法 - 但是(!)你需要记住签名不仅是方法名称,还有参数类型 - 和( !)如果你仔细观察,你会发现错误消息中不需要参数类型。

  5. 您的匿名类有方法focusLost(com.sun.lwuit.Label),但错误消息显示应该有不同签名的方法(不同的参数类型) - focusLost(com.sun.lwuit.Component)

    要解决此编译错误,请向匿名类new com.sun.lwuit.events.FocusListener添加一个带有所需签名的方法:focusLost(com.sun.lwuit.Component)