Мидлет не является абстрактным и не переопределяет абстрактный метод focusLost(com.sun.lwuit.Component)

У меня есть класс LWUIT, который имеет List, сам список содержит метку как элемент.

Моя идея просто сделать действие для списка, когда я фокусируюсь на ярлыке.

Я получаю следующую ошибку при компиляции класса:

анонимный Midlet$2 не является абстрактным и не переопределяет абстрактный метод focusLost(com.sun.lwuit.Component) в 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)
    {
    }

});

person PHPFan    schedule 01.05.2013    source источник


Ответы (1)


Все подробности того, что не так с вашим кодом, есть в сообщении об ошибке, вам просто нужно его внимательно прочитать. Смотреть,

  1. слово anonymous и знак $ в Midlet$2 говорят о том, что в анонимном классе что-то не так.
    В вашем фрагменте кода есть только один такой класс: 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).

person gnat    schedule 01.05.2013