2016-11-25 39 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

相關問題