2016-11-25 68 views
0

我通过使用CheckBoxTreeItem支持自己在一个角落,因为我想要它提供的功能(能够检查所有孩子,如果父母被选中),但是我的父母有一个Hyperlink作为图形,而我的孩子们有Strings作为他们的图形。当您的TreeView包含两种不同类型(CheckBoxTreeItem<Hyperlink>CheckBoxTreeItem<String>)时,Java不喜欢它。我的选项是创建一个接受通用类型的TreeView,或者查找以纯文本形式显示Hyperlinks的方法。我用泛型类型选项修饰了几个小时,但似乎无法使其工作。我更倾向于修改超链接,但我会非常乐意接受任何建议。包含不同类型的TreeView

回答

0

如果您想添加Node类型,则可以使用TreeItemgraphic属性。

@Override 
public void start(Stage primaryStage) { 
    CheckBoxTreeItem<String> item = new CheckBoxTreeItem<>(null, new Hyperlink("abc")); 
    CheckBoxTreeItem<String> item2 = new CheckBoxTreeItem<>("Hello World"); 
    CheckBoxTreeItem<String> item3 = new CheckBoxTreeItem<>("42"); 
    item.getChildren().setAll(item2, item3); 

    TreeView<String> treeView = new TreeView<>(item); 
    treeView.setCellFactory(CheckBoxTreeCell.forTreeView()); 

    Scene scene = new Scene(treeView); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

或者如果TreeItem值包含Node,你需要修改的CheckBoxTreeCellupdateItem方法的位:

CheckBoxTreeItem<Object> item = new CheckBoxTreeItem<>(new Hyperlink("abc")); 
CheckBoxTreeItem<Object> item2 = new CheckBoxTreeItem<>("Hello World"); 
CheckBoxTreeItem<Object> item3 = new CheckBoxTreeItem<>("42"); 
CheckBoxTreeItem<Object> item4 = new CheckBoxTreeItem<>(new Hyperlink("def")); 
item.getChildren().setAll(item2, item3, item4); 

TreeView<Object> treeView = new TreeView<>(item); 
treeView.setCellFactory(tv -> new CheckBoxTreeCell<Object>() { 

    private final HBox graphicWrapper = new HBox(); 

    { 
     graphicWrapper.setAlignment(Pos.BASELINE_LEFT); 
    } 

    @Override 
    public void updateItem(Object item, boolean empty) { 
     graphicWrapper.getChildren().clear(); 
     super.updateItem(item, empty); 

     if (!empty && (item instanceof Node)) { 
      // replace graphic & text 
      setText(null); 
      graphicWrapper.getChildren().setAll(getGraphic(), (Node) item); 
      setGraphic(graphicWrapper); 
     } 
    } 

}); 
+0

去与方法头号。像魅力一样工作。对于那些阅读,请确保包含setCellFactory行。否则,你会得到只有字符串的TreeView,没有CheckBoxes。 – mpowell48

相关问题