如何从代号one中的组件名称获取组件?
How to get component from component name in codenameone?
如果我知道由 component.setName(name) 设置的组件名称是什么,我如何使用该名称来获取组件对象。
如果您已经通过设计器添加了该组件,那么您可以通过
直接访问
findWhatEverComponentName()
(您可以通过 findMyTf() 访问下面的 TextField 名称)
但是如果您通过代码添加了组件,那么访问该组件的方法之一是通过其父容器作为(例如其 TextField)
TextField myTf = (TextField) findParentContainer().getComponentAt(0)
在这里,您必须维护来自该 ParentContainer 的正确组件索引,而不是 0。
要比较它的名称,您可以使用
findParentContainer().getComponentAt(0).getName().equalsIgnoreCase(name)
例如:
private static Component findByName(Container root, String componentName) {
int count = root.getComponentCount();
for(int iter = 0 ; iter < count ; iter++) {
Component c = root.getComponentAt(iter);
String n = c.getName();
if(n != null && n.equals(componentName)) {
return c;
}
if(c instanceof Container) {
c = findByName((Container)c, componentName);
if(c != null) {
return c;
}
}
}
return null;
}
如果我知道由 component.setName(name) 设置的组件名称是什么,我如何使用该名称来获取组件对象。
如果您已经通过设计器添加了该组件,那么您可以通过
直接访问findWhatEverComponentName()
(您可以通过 findMyTf() 访问下面的 TextField 名称)
但是如果您通过代码添加了组件,那么访问该组件的方法之一是通过其父容器作为(例如其 TextField)
TextField myTf = (TextField) findParentContainer().getComponentAt(0)
在这里,您必须维护来自该 ParentContainer 的正确组件索引,而不是 0。
要比较它的名称,您可以使用
findParentContainer().getComponentAt(0).getName().equalsIgnoreCase(name)
例如:
private static Component findByName(Container root, String componentName) {
int count = root.getComponentCount();
for(int iter = 0 ; iter < count ; iter++) {
Component c = root.getComponentAt(iter);
String n = c.getName();
if(n != null && n.equals(componentName)) {
return c;
}
if(c instanceof Container) {
c = findByName((Container)c, componentName);
if(c != null) {
return c;
}
}
}
return null;
}