항목에 부모가 없으면 (즉, tree.getParent(itemId) == null
) 루트입니다. 그 형제가 다른 루트 항목이므로 그렇지 않다면 항목의 부모와 자식을 가져옵니다.
코드 :
public class TreeSiblingsComponent extends VerticalLayout {
public TreeSiblingsComponent() {
Tree tree = new Tree();
addComponent(tree);
// some root items
tree.addItem("1");
tree.setChildrenAllowed("1", false);
tree.addItem("2");
tree.setChildrenAllowed("2", false);
// an item with hierarchy
tree.addItem("3");
tree.addItem("4");
tree.setChildrenAllowed("4", false);
tree.setParent("4", "3");
tree.addItem("5");
tree.setChildrenAllowed("5", false);
tree.setParent("5", "3");
tree.expandItem("3");
// another root
tree.addItem("6");
tree.setChildrenAllowed("6", false);
// another item with children that have children
tree.addItem("7");
tree.addItem("8");
tree.setParent("8", "7");
tree.addItem("9");
tree.setChildrenAllowed("9", false);
tree.setParent("9", "8");
tree.addItem("10");
tree.setChildrenAllowed("10", false);
tree.setParent("10", "8");
tree.expandItemsRecursively("7");
// label to display siblings on selection
Label siblings = new Label("Nothing selected");
siblings.setCaption("Siblings:");
addComponent(siblings);
tree.addItemClickListener(event -> {
Object parent = tree.getParent(event.getItemId());
if (parent == null) {
// root items have no parent
siblings.setValue(tree.rootItemIds().toString());
} else {
// get parent of selected item and its children
siblings.setValue(tree.getChildren(parent).toString());
}
});
}
}
결과 :
다음은 시작해야 기본 샘플 (선택된 노드는 형제의 목록에 나타납니다 점에 유의하시기 바랍니다)입니다