我创建了一个按名称查找jcomponents的递归方法。此方法找到正确的组件,但它返回null
。我猜我没有正确处理组件的返回和返回null。我如何才能正常工作?递归地查找对象,发现时返回null
编辑:改变它,我从下面的评论了解。但它不会返回组件。
public Component findComponent(String str, Component tt){
for (Component c : ((Container) tt).getComponents()) {
System.out.println("name: " + c.getName());
if(c.getName().equals(str)){
System.out.println("Found it! " + c.getName());
return c;
} else {
return findComponent(str, c);
}
}
return null;
}
这将立即停止。有一个Component
没有Components
所以我猜它会立即停止并返回null?
,如果我从findComponent(str, c);
删除return
控制台提供了:
name: titel
name: l
name: jpj
name: jtx
name: jpath
Found it! jpath
name: knapper
name: k1
name: n1
name: k2
name: n2
name: k3
name: n3
name: jpp
name: text
name: jpe
name: ta
标题是不包含任何组件之一。这是一个新问题吗?
你'for'循环应该只有'tt'是'instanceOf'容器启动。 – LIProf
那么我将如何迭代所有的tt组件呢? – PushALU
在循环之前需要if语句。 (类似于'if(tt instanceOf Container){// start loop';在'else'部分中检查名称是否匹配并返回组件或null。 – LIProf