2013-05-01 145 views
1

我有一个LWUIT类,它有一个List,列表本身包含一个Label作为一个项目。Midlet不是抽象的,也不重写抽象方法focusLost(com.sun.lwuit.Component)

我的想法只是当我专注于标签时为列表做出动作。

我得到以下错误,编译类时:

匿名MIDlet的$ 2不是抽象的,在 的com.sun不重写抽象 方法focusLost(com.sun.lwuit.Component)。 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) 
    { 
    } 

}); 

回答

3

的什么是错的你的代码是在错误信息所有的细节,你只需要仔细阅读。你看,

  1. anonymous并签署$Midlet$2告诉你什么是错的匿名类。
    在您的代码段,这里只有一个这样的类:new com.sun.lwuit.events.FocusListener

  2. does not override abstract method focusLost(com.sun.lwuit.Component)意味着你的匿名类错过了方法的定义有这样的签名(签名是方法名称和参数类型)

  3. 看您在那个匿名类中定义的方法更接近,编译器是否抱怨过某种方法?乍一看,你可能会认为它存在,有一种叫做focusLost的方法 - 但是(!)你需要记住,签名不仅仅是方法名,还有参数类型 - 和(!)如果你看接近,你会发现参数类型不是错误信息中所要求的。

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

要修复此编译错误,请将匿名类new com.sun.lwuit.events.FocusListener添加到具有所需签名的方法:focusLost(com.sun.lwuit.Component)

相关问题