2014-10-09 58 views
1

有没有人有我的问题的解决方案?我需要更多图标来显示我的Tree组件中的项目。

图标可用于传达项目的节点类型,但我需要表示其状态或其他属性。
如果Tree有像addItemIcon或addItemOverlayIcon这样的方法,这将是理想的。

感谢您的建议。Vaadin树:覆盖或更多的图标

回答

1

您可以为项目设置图标:

Tree tree = new Tree(); 
tree.addItem("MyItem"); 
tree.setItemIcon("MyItem", FontAwesome.ADJUST); 

如果没有足够的图标FontAwesome你总是可以映射你自己或其他图标集(如资源)。

内嵌添加更多图标的一种方法是添加ItemStyleGenerator: 您可以在哪里引用itemId,您希望在其中添加CSS样式(放入类属性)。

tree.setItemStyleGenerator(new ItemStyleGenerator() 
{ 
    @Override 
    public String getStyle(Tree source, Object itemId) 
    { 
     return " fa fa-road"; 
    } 
}); 

然后,你必须用自己的CSS样式化它(图字体图标类选择和使用大小和颜色理想的CSS属性),它看起来应该是这样的:

.fa .fa-road span:BEFORE{ 
    font-family: FontAwesome; 
    content: '\f018'; 
} 
+0

我可以用一个图标,但问题是:如何将两个或多个图标添加到一个树项目。旁边的每一个(标题之前)或使用透明度覆盖在同一个地方。 – Hink 2014-10-09 12:30:12

+0

谢谢,这是足够的解决方案。另外它可以通过颜色来丰富。 – Hink 2014-10-10 22:47:40

0

Beeing受zigc启发,我尝试了另一种解决方案。只需设置

.v-tree-node-MyTree{font-family: FontAwesome, Arial} 

然后我可以包括从FontAwesome特殊字符直接插入字幕文本,在开始的时候,在中间的结束或anywehere。不支持(不包含在FontAwesome中)字符以第二种字体显示。

与开头两个图标或标题的例子:

int codePoint[]={FontAwesome.HOME.getCodepoint(),FontAwesome.ROAD.getCodepoint()}; 
tree.setItemCaption(itemId, new String(codePoint,0,2)+nodeName);