我正在使用vaadin的TreeTable,我试图为我的行添加工具提示。这是他们说应该怎么做但是propertyId总是为null所以我不能得到正确的列?是的,我会在eclipse调试器中运行它aswell =)
与此部分相关的代码:
private void init() {
setDataSource();
addGeneratedColumn("title", new TitleColumnGenerator());
addGeneratedColumn("description", new DescriptionGenerator());
setColumnExpandRatios();
setItemDescriptionGenerator(new TooltipGenerator());
}
protected class TooltipGenerator implements ItemDescriptionGenerator{
private static final long serialVersionUID = 1L;
@Override
public String generateDescription(Component source, Object itemId, Object propertyId) {
TaskRow taskRow = (TaskRow)itemId;
if("description".equals(propertyId)){
return taskRow.getDescription();
}else if("title".equals(propertyId)){
return taskRow.getTitle();
}else if("category".equals(propertyId)){
return taskRow.getCategory().toString();
}else if("operation".equals(propertyId)){
return taskRow.getOperation().toString();
}else if("resourcePointer".equals(propertyId)){
return taskRow.getResourcePointer();
}else if("taskState".equals(propertyId)){
return taskRow.getTaskState().toString();
}
return null;
}
}
答案 0 :(得分:1)
在向树中添加项目时,我已将源对象作为itemId传递。
Node node = ...;
Item item = tree.addItem(node);
这使用对象“node”作为id。然后允许我在generateDescription方法中将itemId作为Node的实例进行转换。
public String generateDescription(Component source, Object itemId, Object propertyId) {
if (itemId instanceof Node) {
Node node = (Node) itemId;
...
也许不是最好的解决方案,但它对我有用。然后,我再次将项目添加到树而不是使用DataContainer。