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!

War es hilfreich?

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
scroll top