2016-11-29 1 views
0

Ich habe eine TreeView erstellt, die viele CheckBoxTreeCells enthält. Ich habe auch eine Button, die ich gerne alle CheckBoxTreeCells überprüfen würde. Ich habe gelesen this tutorial, und ich bin ein bisschen verloren. Hier ist, was ich bisher:Überprüfen Sie alle CheckBoxTreeCells in einem TreeView JavaFX

Button-Code:

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 Code:

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); 
} 

Das Beispiel in der Verbindung vorgesehen ist etwas komplexer als das, was ich brauche, und ich denke, es verwirrt mich. Wie bearbeite ich ein CheckBoxTreeItems in einem TreeView?

+0

[Hier ist ein Link zum Durchlaufen von Treeview in Javafx. Hoffe, das hilft.] (Http://stackoverflow.com/questions/28342309/iterate-treeview-nodes) –

+0

Dies ist, was ich zuerst versucht, aber Sie können Kontrollkästchen auf diese Weise nicht aktivieren oder deaktivieren, weil Sie eine Liste zurück erhalten von TreeItems anstelle einer Liste von CheckBoxTreeItems. Trotzdem danke. – mpowell48

Antwort

0

Es sei denn, es unabhängige CheckBoxTreeItem s, seine genug, um die Wurzel zu wählen:

root.setSelected(true); 

da dies automatisch die Kinder auswählt.

+0

Dies wäre einfacher für die Auswahl aller Kontrollkästchen gewesen, so dass Sie die beste Antwort erhalten. Ich implementierte es anders, weil ich einen anderen Knopf hatte, der durch den Baum schlängelte, um zu überprüfen, ob irgendwelche der Zweige unbestimmt waren (die Zweige haben Blätter und ich muss überprüfen, ob die Blätter überprüft werden, wenn der Zweig unbestimmt ist). Der vollständige Code für Ihre Antwort sollte folgendermaßen aussehen: 'CheckBoxTreeItem root = (CheckBoxTreeItem ) myTreeView.getRoot();' 'root.setSelected (true);' – mpowell48

0

beste Art, wie ich konnte, war finden, dies zu tun:

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); 
     } 
    } 
} 
Verwandte Themen