我創建了一個按名稱查找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