2016-11-29 7 views
0

CheckBoxTreeCellsを含むTreeViewを作成しました。私もButtonを持っています。私はCheckBoxTreeCellsのすべてをチェックしたいと思います。私はthis tutorialを読んでいて、少し失われています。ここで私はこれまで持っているものです。TreeView JavaFXのCheckBoxTreeCellをすべて確認してください

ボタンのコード:

public void fooMethod() { 
    /*selectAll is an instance variable*/ 
    selectAll = new Button("Select All"); 
    selectAll.setOnMouseClicked(e -> handleSelectAllButtonAction(e)); 
} 

private void handlSelectAllButtonAction(MouseEvent e) { 
    /*Code goes here*/ 
} 

のTreeViewコード:

public void fooMethod2() { 
    /*myTreeView is also an insance variable*/ 
    myTreeView = new TreeView<String>(); 

    CheckBoxTreeItem<String> root = new CheckBoxTreeItem<>(); 
    CheckBoxTreeItem<String> branch1 = new CheckBoxTreeItem<>("Branch 1"); 
    CheckBoxTreeItem<String> branch2 = new CheckBoxTreeItem<>("Branch 2"); 
    CheckBoxTreeItem<String> branch3 = new CheckBoxTreeItem<>("Branch 3"); 

    root.getChildren.add(branch1); 
    root.getChildren.add(branch2); 
    root.getChildren.add(branch3); 

    myTreeView.setCellFactory(CheckBoxTreeCell.forTreeView()); 
    myTreeView.setRoot(root); 
    myTreeView.setShowRoot(false); 
    myTreeView.setEditable(true); 
} 

リンクに提供された例は、もう少し複雑な私は必要なものよりも、そしてIそれは私を混乱させていると思う。 TreeViewのCheckBoxTreeItemsを編集するにはどうすればよいですか?これは自動的に子供を選択するので

root.setSelected(true); 

:ルートを選択してその十分な独立したCheckBoxTreeItem sが、ある場合を除き

private void handlSelectAllButtonAction(MouseEvent e) { 
    CheckBoxTreeItem<String> root = (CheckBoxTreeItem<String>)myTreeView.getRoot(); 
    int numBranches = root.getChildren().size(); 

    for(int i = 0; i < numBranches; i++) { 
     if(((CheckBoxTreeItem<String>)root.getChildren().get(i)).isSelected()) { 
      ((CheckBoxTreeItem<String>)root.getChildren().get(i)).setSelected(false); 
     } 
    } 
} 
+0

[ここには、javafxでtreeviewを繰り返すリンクがあります。これが助けてくれればと思っています。](http://stackoverflow.com/questions/28342309/iterate-treeview-nodes) –

+0

これは私が最初に試したことですが、チェックボックスをオフにすることはできません。 CheckBoxTreeItemsのリストの代わりにTreeItemsを使用します。ありがとう、結構です。 – mpowell48

答えて

0

:私は見つけることができる

+0

これはすべてのチェックボックスを選択する方が簡単だったので、最良の答えが得られます。私は別の方法で実装しました。なぜなら、ツリーの中にループがあり、ブランチのいずれかが不確定であるかどうかをチェックするためでした(ブランチには葉があり、ブランチが不確定の場合にチェックされます)。あなたの答えの完全なコードは次のようになります: 'CheckBoxTreeItem root =(CheckBoxTreeItem )myTreeView.getRoot(); ' ' root.setSelected(true); ' – mpowell48

0

ベストな方法は、これを実行することでした。

関連する問題