我正在Vaadin 7做一个项目。在那里,我需要在树中添加一个重复的项目。
我需要一棵这样的树,
+ Person A
Name
Age
+ Person B
Name
Age
但是,Vaadin Tree组件未在树中添加Duplicate项。好像它覆盖了上一个项目。
在Vaadin有可能有如上所述的树吗?我使用分层容器。
更新
Object a = "a";
Object b = "b";
Object c = "c";
Object d = "d";
Object e = "a";
Object alphabet = "alphabet";
HierarchicalContainer aHC = new HierarchicalContainer();
aHC.addItem(a);
aHC.addItem(b);
aHC.addItem(c);
aHC.addItem(d);
aHC.addItem(e);
aHC.addItem(alphabet);
aHC.setParent(a, alphabet);
aHC.setParent(b, alphabet);
aHC.setParent(c, alphabet);
aHC.setParent(d, alphabet);
aHC.setParent(e, alphabet);
Tree tree = new Tree();
tree.setContainerDataSource(aHC);
由于对象a和e具有与'a'相同的值。树只是跳过或替换它。
动态代码
String[] items = {"alphabet", "a", "b", "c", "d", "a"};
for(String item : items) {
Object itemId = tree.addItem();
tree.setItemCaption(itemId, item);
}
现在我如何将字母设置为所有其他项的父级?
答案 0 :(得分:2)
问题在于a.equals(e) == true
。因此,分层容器不会添加两次。
你可以做两件事:
1)
Object itemId = select.addItem();
select.setItemCaption(itemId, "The Sun");
更多信息here。
2)使用POJO对象,例如toString()
,并设置项目标题或使用select.setItemCaptionMode(Select.ITEM_CAPTION_MODE_XYZ);
更多信息here。
根据你的编辑: 添加子项目后:
tree.setParent(itemChildId, itemAlphabetId);
请参阅示例here。
答案 1 :(得分:0)
关键是每个项目都有唯一的ID并修改字幕。类似的东西:
$ python manage.py migrate swsite 0023_hitcounter.py
根据定义,树不能有多个具有相同ID的项目。
答案 2 :(得分:0)
我已经做了以下事情而无法访问它
班级菜单
public class Menu implements Serializable{
private static final long serialVersionUID = 4788509071437681011L;
private String nodeName;
public Menu(String nodeName) {
this.nodeName = nodeName;
}
public Menu() {
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
}
Class MenuCaption
public class MenuCaption implements ItemCaptionGenerator<Menu>{
private static final long serialVersionUID = 5863017672993685887L;
@Override
public String apply(Menu item) {
return item.getNodeName();
}
}
ViewClass方法
private void loadMenu() {
TreeData<Menu> menuTreeData = new TreeData<>();
Menu menu = null;
Menu childMenu = null;
Tree<Menu> menuTree = new Tree<>();
try {
menu = new Menu("General");
menuTreeData.addItem(null, menu);
menu = new Menu("Eze");
menuTreeData.addItem(null, menu);
childMenu = new Menu("Investor Activity");
menuTreeData.addItem(menu, childMenu);
childMenu = new Menu("Investor Statement");
menuTreeData.addItem(menu, childMenu);
menu = new Menu("Investran");
menuTreeData.addItem(null, menu);
menu = new Menu("VPM");
menuTreeData.addItem(null, menu);
childMenu = new Menu("Investor Activity");
menuTreeData.addItem(menu, childMenu);
childMenu = new Menu("Investor Statement");
menuTreeData.addItem(menu, childMenu);
TreeDataProvider<Menu> dataProvider = new TreeDataProvider<Menu>(menuTreeData);
menuTree.setDataProvider(dataProvider);
menuTree.setItemCaptionGenerator(new MenuCaption());
this.mainHorizontalSplitPanel.setFirstComponent(menuTree);
}catch (Exception e) {
e.printStackTrace();
}
}
输出类似
的内容General
>Eze
Investor Activity
Investor Statement
Investran
>VPM
Investor Activity
Investor Statement