After removing an item the previous one is selected. To reproduce:
- select "Item 2";
- press "Remove selected" button
"Item 2" will be removed. "Item 1" will be selected unexpectedly.
Sample to check:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class App extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
VBox content = new VBox();
final TreeView tree_view = new TreeView();
TreeItem<String> tree_model = new TreeItem<String>("Root");
for (int i = 0; i < 5; i++) {
TreeItem node = new TreeItem("Item " + i);
tree_model.getChildren().add(node);
}
tree_view.setRoot(tree_model);
tree_view.setShowRoot(true);
tree_model.setExpanded(true);
Button btn = new Button("Remove selected");
btn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent t) {
tree_view.getRoot().getChildren().removeAll(tree_view.getSelectionModel().getSelectedItems());
}
});
content.getChildren().add(tree_view);
content.getChildren().add(btn);
stage.setScene(new Scene(content, 200, 200));
stage.show();
}
}
- select "Item 2";
- press "Remove selected" button
"Item 2" will be removed. "Item 1" will be selected unexpectedly.
Sample to check:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class App extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
VBox content = new VBox();
final TreeView tree_view = new TreeView();
TreeItem<String> tree_model = new TreeItem<String>("Root");
for (int i = 0; i < 5; i++) {
TreeItem node = new TreeItem("Item " + i);
tree_model.getChildren().add(node);
}
tree_view.setRoot(tree_model);
tree_view.setShowRoot(true);
tree_model.setExpanded(true);
Button btn = new Button("Remove selected");
btn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent t) {
tree_view.getRoot().getChildren().removeAll(tree_view.getSelectionModel().getSelectedItems());
}
});
content.getChildren().add(tree_view);
content.getChildren().add(btn);
stage.setScene(new Scene(content, 200, 200));
stage.show();
}
}