LWUIT: изменить текст компонентов в форме отображения

Я использую codenameone и хочу изменить текст некоторых меток или заполнить таблицу динамическими данными из базы данных. Итак, мой вопрос:

1. какое событие подходит для изменения текста компонента при отображении формы?

2.как создать базу данных и загрузить из нее данные или вставить в нее данные?

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


person Ahmad    schedule 31.10.2012    source источник


Ответы (2)


Если вы используете конструктор GUI, у вас есть событие beforeShow, где вы можете сделать именно это. Если вы используете код, просто сделайте это, прежде чем вызывать form.show().

Я предлагаю вам работать с классом Storage, если ваши потребности просты, он поддерживает хранение простых объектов. Вы также можете использовать базу данных SQlite на смартфонах (не J2ME и т. д.), но для большинства это излишне. Оба хорошо задокументированы в руководстве для разработчиков Codename One.

person Shai Almog    schedule 01.11.2012
comment
Большое спасибо, Шай. Я попытался сделать то, что вы сказали, и получил ошибку Произошла внутренняя ошибка приложения: java.lang.NullPointer. это некоторые строки моего кода (сгенерированные с помощью guibuilder codenameone в классе StateMachineBase.java): ).ПолучитьТекущий()); } protected void beforeReminderUI (Форма f) { findLblTimeValue () .setText (Привет); } - person Ahmad; 01.11.2012
comment
Вы можете использовать findLblTimeValue(f), так как форма еще не отображается (это метод before), метод Display.getCurrent() вернет предыдущую форму, которая не содержит в себе LblTimeValue. - person Shai Almog; 01.11.2012

Спасибо, Шай. Как сказал Шай, чтобы установить значение для компонентов формы, мы можем сделать это перед form.Show().

Я получил ошибку, потому что я вызвал findLblTimeVlaue(), но когда я изменил его на findLblTimeVlaue(String, Form), моя ошибка исчезла. это код:

@Override
protected void beforeReminderUI(Form f) {
    com.codename1.ui.Label lbl = 
            (com.codename1.ui.Label)findByName("lblTimeValue", f);
    lbl.setText("Hi 2013213");
}
person Ahmad    schedule 01.11.2012