-
Bug
-
Resolution: Duplicate
-
P4
-
None
-
8u20
-
Windows 7 - 64 Bit.
Selecting the first entry and pressing the button raises the issue that the focus moves downwards while the selection is still correct.
public class GuiTestMainFocus extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
final TreeItem<String> treeItem = new TreeItem("Items");
List<String> stringList = new ArrayList<String>();
for (Integer i = 0; i < 10; i++) {
stringList.add("Test " + i);
}
TreeView<String> treeView = new TreeView(treeItem);
btn.setText("Set new list and select oldIdx!");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
List<String> stringList = new ArrayList<String>();
for (Integer i = 0; i < 10; i++) {
stringList.add("Changed " + i);
}
Integer oldIdx = treeView.getSelectionModel().getSelectedIndex();
List<TreeItem<String>> treeItems = new ArrayList<>();
stringList.forEach( p -> treeItems.add(new TreeItem(p)));
treeView.getRoot().getChildren().setAll(treeItems);
treeView.getSelectionModel().select(oldIdx);
treeView.requestFocus();
}
});
stringList.forEach(string -> treeItem.getChildren().add(new TreeItem(string)));
HBox root = new HBox();
treeView.setShowRoot(false);
root.getChildren().addAll(treeView, btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
public class GuiTestMainFocus extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
final TreeItem<String> treeItem = new TreeItem("Items");
List<String> stringList = new ArrayList<String>();
for (Integer i = 0; i < 10; i++) {
stringList.add("Test " + i);
}
TreeView<String> treeView = new TreeView(treeItem);
btn.setText("Set new list and select oldIdx!");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
List<String> stringList = new ArrayList<String>();
for (Integer i = 0; i < 10; i++) {
stringList.add("Changed " + i);
}
Integer oldIdx = treeView.getSelectionModel().getSelectedIndex();
List<TreeItem<String>> treeItems = new ArrayList<>();
stringList.forEach( p -> treeItems.add(new TreeItem(p)));
treeView.getRoot().getChildren().setAll(treeItems);
treeView.getSelectionModel().select(oldIdx);
treeView.requestFocus();
}
});
stringList.forEach(string -> treeItem.getChildren().add(new TreeItem(string)));
HBox root = new HBox();
treeView.setShowRoot(false);
root.getChildren().addAll(treeView, btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
- duplicates
-
JDK-8088194 TreeView keyboard focus moves to unexpected node when child nodes are added
-
- Resolved
-