Я работаю над проектом eclipse rcp, где мне нужно создать treeviewer из объекта TreeStructured Java. В настоящее время я жестко привязал объекты Java к созданию структуры, и она работает нормально. Мне нужно создать метод, который вычисляет весь объект «Родители и дети» и формирует древовидную структуру. Это должен быть рекурсивный метод. Я написал рекурсивный метод для создания дерева структурированного Java-объекта . Но это не работает должным образом. Я не знаю, где именно проблема. попросите вас помочь в этом. Пожалуйста, найдите код ниже.Как создать дерево Java Структурированный объект
private FileParent getInput() {
FileParent root = new FileParent("Root");
FileParent A = new FileParent("A");
FileParent a1 = new FileParent("A1");
FileObject a11 = new FileObject("A11");
a1.addChild(a11);
FileObject a2 = new FileObject("A2");
A.addChild(a1);
A.addChild(a2);
FileParent b = new FileParent("B"); FileObject b1 = new
FileObject("B1"); FileObject b2 = new FileObject("B2");
b.addChild(b1); b.addChild(b2);
root.addChild(A);
// root.addChild(b);
return root;
}
Мой рекурсивный метод, который должен пройти через все родители и дети объектов и создает дерево структурированный объект.
FileParent root1 = new FileParent("Root");
public FileParent getChildren(FileParent root) {
if (!root.hasChildren()) {
return root;
}
if (root != null && root.hasChildren()) {
FileObject[] children = root.getChildren();// size two
for (FileObject fileObject : children) { // 2 times
// here children will be the folders
if (fileObject instanceof FileParent) {
FileParent folder = (FileParent) fileObject;
// root1.setParent(folder.getParent());
// if (root1.getParent() != null) {
root1.addChild(folder);
// }
getChildren((FileParent) folder);
} else {
System.out.println("FileName: " + fileObject.getName());
// root1.setParent(fileObject.getParent());
// if (root1.getParent() != null) {
root1.addChild(fileObject);
// }
}
}
}
return root1;
}
общественного класса FileObject {
private String name;
private FileParent parent;
public FileObject(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setParent(FileParent parent) {
this.parent = parent;
}
public FileParent getParent() {
return parent;
}
public String toString() {
return getName();
}
}
общественного класса FileParent расширяет FileObject { /** * */
private List<FileObject> children;
public FileParent(String name) {
super(name);
children = new ArrayList<FileObject>();
}
public void addChild(FileObject child) {
// if (children.contains(child)) {
children.add(child);
child.setParent(this);
// }
}
public void removeChild(FileObject child) {
children.remove(child);
child.setParent(null);
}
public FileObject[] getChildren() {
return (FileObject[]) children.toArray(new FileObject[children.size()]);
}
public boolean hasChildren() {
return children.size() > 0;
}
}
"он не работает должным образом". Вам нужно будет предоставить более подробную информацию. Что не работает? – GriffeyDog
@ Я уже упоминал, что работаю над проектом Eclipse RCP. JTree было бы невозможно. – user2886754
Существует один метод в treeviewer.setInput (Object obj). Если я передаю getInput() как параметр, он будет работать нормально. Но если я передам getChildren(), который является моим рекурсивным методом, он не работает. Я полагаю, что это проблема с моей логикой. – user2886754