2016-11-25 11 views
0

CheckBoxTreeItemを使用すると、私はそれが提供する機能(親がチェックされている場合はすべての子をチェックする機能)を望んでいるので、グラフィック、私の子供はStringsのグラフィックを持っています。 Javaは、TreeViewに2種類の異なるタイプ(CheckBoxTreeItem<Hyperlink>CheckBoxTreeItem<String>)が含まれていると、そのようなことを好まない。私の選択肢は、汎用タイプを受け入れるTreeViewを作成すること、またはHyperlinksをプレーンテキストとして表示する方法を見つけることです。私はジェネリックタイプのオプションを数時間かけて試しましたが、動作させることはできません。私はハイパーリンクの変更にもっと傾いていますが、私は助言のためにどちらかの方法で素晴らしいものになるでしょう。異なるタイプのツリービュー

答えて

0

Nodeタイプを追加する場合は、graphicプロパティをTreeItemとすることができます。

また
@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、CheckBoxはありません。 – mpowell48

関連する問題