【问题标题】:LWUIT: Change components text on show formLWUIT:更改显示表单上的组件文本
【发布时间】:2012-10-31 11:15:44
【问题描述】:

我使用代号,我想更改一些标签文本或用数据库中的动态数据填充表格。 所以,我的问题是:

1.什么事件对显示表单时改变组件文本有好处?

2.如何创建数据库并从中加载数据或插入数据?

我的申请详情: 我有一个带有按钮列表的主表单,每个按钮都映射为显示另一个表单。 除主窗体外的窗体组件必须动态设置。

【问题讨论】:

    标签: events netbeans java-me lwuit codenameone


    【解决方案1】:

    如果您使用的是 GUI 构建器,您可以在 beforeShow 事件中执行此操作。如果您使用代码,那么只需在调用 form.show() 之前执行这些操作。

    如果您的需求很简单,我建议您使用Storage 类,它支持存储简单对象。您还可以在智能手机(不是 J2ME 等)上使用 SQlite 数据库,但这对大多数人来说是多余的。两者都在 Codename One developer guide 中有详细记录。

    【讨论】:

    • 非常感谢 Shai。我尝试按照您所说的做,但出现错误“发生内部应用程序错误:java.lang.NullPointer”。这是我的一些代码行(使用 StateMachineBase.java 类中代号的 guibuilder 生成): public com.codename1.ui.Label findLblTimeValue() { return (com.codename1.ui.Label)findByName("lblTimeValue", Display. getInstance().getCurrent()); } protected void beforeReminderUI(Form f) { findLblTimeValue().setText("Hi"); }
    • 您可以使用 findLblTimeValue(f),因为表单尚未显示(这是之前的方法),因此 Display.getCurrent() 方法将返回不包含 LblTimeValue 的前一个表单它。
    【解决方案2】:

    谢谢夏。正如 Shai 所说,要为表单的组件设置值,我们可以在 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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多