Расширение класса BlackBerry Field не будет рисовать - PullRequest
1 голос
/ 13 мая 2010

Используя JRE 5.0.0, имитатором является 8520.

На экране я использую FlowFieldManager (Manager.VERTICAL_SCROLL) и добавляю поля для отображения данных.

Когда я делаю

this.flowManager = new FlowFieldManager(Manager.VERTICAL_SCROLL);
Field field = new Field()
{
    protected void paint(Graphics graphics)
    {
        graphics.drawTest("Test", 0, 0);
    }
    protected void layout(int width, int height)
    {
        this.setExtend(300, 300); // just testing
    }
}

this.flowManager.add(field);

Экран отображается правильно, и на экране отображается «Test».

Если, с другой стороны, я попытаюсь абстрагировать это в класс с именем CustomField с теми же свойствами и добавить его в диспетчер потоков, рендеринг не произойдет. Отладка показывает, что устройство входит в объект, в функцию макета, но не в функцию рисования.

Я не могу понять, почему функция рисования не вызывается при расширении поля. 4.5 API говорит, что макет и рисование - единственные функции, которые мне действительно нужно расширить. (getPreferredWidth и getPreferredHeight будут использоваться для расчета размеров экрана и т. д.)

Заранее спасибо.

1 Ответ

2 голосов
/ 13 мая 2010

Если во время рисования поле находится за пределами области отсечения, оно не будет прорисовано. Это действительно единственное, что я могу видеть неправильно с этим.

Поэтому убедитесь, что это поле не прокручивается где-то на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...