Bonjour à tous,
j'ai pu ecrire ce bout de code pour mon problème du Tree de Java.
J'ai besoin de le rendre recursif;de tel façon qu'il insert un certain nombre de fois l'objet 'CandidatoDto':
j'ai essayé avec un cycle while,mais ça ne me donne rien.
Pour chaque element(ou rigue) du tree,il doit verifier s'il y a encore des objets è inserer et si oui,les inserer jusqu'à sa profondeur...
SVP comment ècrire cette recursion????
public class TreeController extends GenericController{
private Tree tree;
private MySimpleTreeModel treeModel;
private SimpleTreeNode rdDep, salesDep;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
//create a PersonTreeitemRenderer
tree.setTreeitemRenderer(new TreeitemRenderer() {
@Override
public void render(Treeitem item, Object data,int arg2) throws Exception {
if (data == null) return;
SimpleTreeNode t = (SimpleTreeNode)data;
final CandidatoDto person = (CandidatoDto)t.getData();
Treerow tr = new Treerow();
tr.setParent(item);
tr.appendChild(new Treecell(person.getUsername()));
tr.appendChild(new Treecell(person.getPassword()));
tr.appendChild(new Treecell(person.getNome()));
tr.appendChild(new Treecell(person.getCognome()));
item.setOpen(person.isOpen());
item.addEventListener("onOpen", new EventListener() {
public void onEvent(Event event) throws Exception {
Treeitem item = (Treeitem) event.getTarget();
person.setOpen(item.isOpen());
}
});
}
});
//create treemodel and assign root
treeModel = new MySimpleTreeModel(createTreeData());
tree.setModel(treeModel);
}
// public void onClick$addBtn(){
// CandidatoDto person = new CandidatoDto("NewName", "@zkoss.org","767676","");
// SimpleTreeNode stn = new SimpleTreeNode(person, new ArrayList<SimpleTreeNode>());
// treeModel.add(rdDep, stn);
// }
private SimpleTreeNode createTreeData() {
//Create nodes for department R and D
String[] name = {"Pierre","Adam","Thomas"};
String[] accountId = {"p001","a002","t003"};
//Create branch department R and D and assigned children to it. rdDep's children are contained in ArrayList alc.
rdDep = new SimpleTreeNode(new CandidatoDto("VOUU","R&D","",""), createTreeChildren(name, accountId));
al.add(rdDep);
return new SimpleTreeNode("ROOT",al);
}
int m=4;
private List<SimpleTreeNode> createTreeChildren(String[] name, String[] accountId) {
ArrayList<SimpleTreeNode> alc = new ArrayList<SimpleTreeNode>();
for(int i =0; i < name.length; i++){
CandidatoDto person = new CandidatoDto(name[i],name[i] + "@zkoss.org",accountId[i],"OUII");
SimpleTreeNode s =null;
if(i==0){
ArrayList<SimpleTreeNode> alc1 = new ArrayList<SimpleTreeNode>();
//alc1.add(person1);
s=new SimpleTreeNode(person, createTreeChildren1(name, accountId));
System.out.println(i+"++++");
alc.add(s);
}else{
SimpleTreeNode stn = new SimpleTreeNode(person,new ArrayList<SimpleTreeNode>());
alc.add(stn);
}
}
return alc;
}
private List<SimpleTreeNode> createTreeChildren1(String[] name, String[] accountId) {
ArrayList<SimpleTreeNode> alc = new ArrayList<SimpleTreeNode>();
for(int i =0; i < name.length; i++){
CandidatoDto person = new CandidatoDto(name[i],name[i] + "@zkoss.org",accountId[i],"OUII");
SimpleTreeNode s =null;
// while(m>0){
// ArrayList<SimpleTreeNode> alc1 = new ArrayList<SimpleTreeNode>();
// s=new SimpleTreeNode(person, createTreeChildren1(name, accountId));
// SimpleTreeNode stn1 = new SimpleTreeNode(person,new ArrayList<SimpleTreeNode>());
// alc1.add(s);
// m--;
// }
SimpleTreeNode stn = new SimpleTreeNode(person,new ArrayList<SimpleTreeNode>());
alc.add(stn);
}
return alc;
}
private class MySimpleTreeModel extends SimpleTreeModel{
public MySimpleTreeModel(SimpleTreeNode root) {
super(root);
}
public void add(SimpleTreeNode parent, SimpleTreeNode newNodes){
List<SimpleTreeNode> children = parent.getChildren();
int length = children.size();
children.add(newNodes);
fireEvent(parent, length, length, TreeDataEvent.INTERVAL_ADDED);
}
}
}
Merci pour tout votre soutien...