如何使用变量来引用代号一中的组件?

How to use variables to refer to Components in codename one?

我用 UIBuilder 创建了一个 UI。

与其总是使用 findXXXX (),我更愿意在 Statemachine 中做这样的事情:

public class Statemachine ... {

private Container c;
private Tabs t;


initVars () {
   initAll();
}

....
private initAll () {
   Container c = findContainer();
   Tabs t = findTabs();
   ...
}

}

并将它们用作 c.getYYY()

这可能吗?如果是,如何?

是的,你可以这样做,但不可取。

它的危险在于,当您在不同的表单上有 2 个同名的组件时,这可能会引用错误的组件并且可能难以调试。

如果您确定可以处理上述问题,您可以在 Statemachine class 内但在所有方法之外将变量声明和初始化为私有全局变量。

public class Statemachine ... {

    private Container c = findContainer();
    private Tabs t = findTabs(); 

    initVars () {

    }

    ....
}

您不能在当前的 GUI 构建器中执行此操作,因为当前的 GUI 构建器动态创建表单并在导航期间丢弃它们。

new GUI builder 使用完全不同的体系结构,工作方式与此完全相同:每个 UI 表单 1 class。所以每个字段都有变量。

您可以在实际操作中看到这一点 here

请注意,目前 GUI 生成器仍处于预测试阶段,尽管我们非常致力于它及其架构。