我有一个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)
{
}
});
答案 0 :(得分:3)
您的代码出现问题的所有详细信息都在错误消息中,您只需仔细阅读即可。看,
单词anonymous
并在$
中签名Midlet$2
告诉您匿名课程中出现了问题。
在您的代码段中,只有一个类:new com.sun.lwuit.events.FocusListener
does not override abstract method focusLost(com.sun.lwuit.Component)
表示您的匿名类错过了具有此类签名的方法定义(签名是方法名称和参数类型)
仔细查看您在该匿名类中定义的方法,是否有方法编译器在抱怨?
乍一看,你可能认为它在那里,有一个名为focusLost
的方法 - 但是(!)你需要记住签名不仅是方法名称,还有参数类型 - 和( !)如果你仔细观察,你会发现错误消息中不需要参数类型。
您的匿名类有方法focusLost(com.sun.lwuit.Label)
,但错误消息显示应该有不同签名的方法(不同的参数类型) - focusLost(com.sun.lwuit.Component)
。
要解决此编译错误,请向匿名类new com.sun.lwuit.events.FocusListener
添加一个带有所需签名的方法:focusLost(com.sun.lwuit.Component)
。