如何从codenameone中获取组件名称中的组件?

时间:2016-01-18 22:52:44

标签: java codenameone

如果我知道组件的名称是由component.setName(name)设置的,我该如何使用该名称来获取组件对象。

1 个答案:

答案 0 :(得分:3)

如果您已通过设计师添加该组件,则可以通过

直接访问

findWhatEverComponentName()(您可以通过findMyTf()访问以下TextField名称)

但是如果你已经按代码添加了组件,那么访问组件的方法之一就是它的父容器(例如它的TextField)

TextField myTf = (TextField) findParentContainer().getComponentAt(0)

此处而不是0,您必须从该ParentContainer维护正确的组件索引。

并比较它可以使用的名称 findParentContainer().getComponentAt(0).getName().equalsIgnoreCase(name)

E.g:

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;
}