如何使用变量来引用代号一中的组件?
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 生成器仍处于预测试阶段,尽管我们非常致力于它及其架构。
我用 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 生成器仍处于预测试阶段,尽管我们非常致力于它及其架构。