我正在阅读Oracle文档中的TreeView示例,这些示例显示了它们向单元格添加了图像图标。我想使用FontAwesome图标而不是图像。我将FA样式表应用于我的FXML文件,并且我有一个使用FA图标的单独按钮,所以我知道它有效。我的FontAwesome类属性只返回您选择的任何图标的unicode。我的应用程序根本不显示TreeView单元格中的图标。我做错了什么?
private final Node serverIcon = new Label(FontAwesome.SERVER);
private final Node dbIcon = new Label(FontAwesome.DATABASE);
TreeItem<String> root = new TreeItem<>("Available Connections");
root.setExpanded(true);
connTree.setCellFactory(tree -> {
TreeCell<String> cell = new TreeCell<String>() {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty) ;
if (empty) {
setText(null);
} else {
setText(item);
}
}
};
cell.setOnMouseClicked(event -> {
if (!cell.isEmpty()) {
TreeItem<String> treeItem = cell.getTreeItem();
this.selectedServer = cell.getText();
}
});
return cell;
});
for(Connection conn: conns){
TreeItem<String> item = new TreeItem<String>(conn.host);
item.setGraphic(serverIcon);
root.getChildren().add(item);
}
connTree.setRoot(root);
答案 0 :(得分:0)
我建议你查看http://fxexperience.com/controlsfx/ 它将ControlsFX嵌入到jar中。
您可以在java代码中使用它,也可以直接在FXML中使用它。
FXML示例:
<Button fx:id="btGamePage" maxHeight="15.0" mnemonicParsing="false" prefHeight="4.0" onAction="#viewGame" snapToPixel="false" styleClass="first" text="" HBox.hgrow="NEVER">
<graphic>
<Glyph fontFamily="FontAwesome" icon="LINK"/>
</graphic> </Button>
答案 1 :(得分:0)
以下是如何将图标作为 TreeView
添加到 TreeItem
的示例:
final var glyph = FontAwesomeIcon.valueOf( "BOOKMARK" );
final var icon = FontAwesomeIconFactory.get().createIcon( glyph, "1.2em" );
final var item = new TreeItem<>( "Item Description", icon );
tree.getRoot().getChildren().add( item );
其中 tree
是 TreeView
实例。