So erhalten Sie alle ausgewählten Baumelemente in einer Baumansicht in JavaFX
-
21-12-2019 - |
Frage
Ich muss in der Lage sein, eine aktualisierte Liste aller ausgewählten Elemente in einer Baumansicht (mit aktivierter Mehrfachauswahl) zu erhalten.
Dieses Beispiel: Baumelementauswahlereignis in javafx2
zeigt, wie jeweils auf ein ausgewähltes Element reagiert/identifiziert wird.Gibt es eine Möglichkeit, alle ausgewählten Artikel auf einmal zu erhalten?So etwas wie der hypothetische nicht funktionierende Code unten:
ArrayList<TreeItem> selectedTreeItems = new ArrayList<>();
myTreeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
selectedTreeItems.clear();//reset the list. correct?
//get a new list of children of the root
ObservableList objects = myTreeView.getRoot().getChildren();
//loop to get the selected items.
for (int i = 0; i < objects.size(); i++) {
TreeItem object = (TreeItem) objects.get(i);
if (thisObjectIsSelected(object)) {
selectedTreeItems.add(object);
}
}
}
});
privatevoid thisObjectIsSelected(TreeItem item){
//what do I do here?
}
Ich bin mir nicht sicher, wie ich erreichen kann, was ich will.Jede Hilfe wird sehr geschätzt!
Lösung
Beobachten Sie einfach und beziehen Sie sich auf die Auswahlmodelle getSelectedItems()
Liste:
myTreeView.getSelectionModel().getSelectedItems().addListener(new ListChangeListener<TreeItem>() {
@Override
public void onChanged(Change<? extends TreeItem> change) {
// myTreeView.getSelectionModel().getSelectedItems() contains all the selected items
}
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow