Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8089423

TreeView FocusModel focusing wrong index

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • P4
    • None
    • 8u20
    • javafx
    • Windows 7 - 64 Bit.

    Description

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

      Attachments

        Issue Links

          Activity

            People

              kpk Karthik P K
              duke J. Duke
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                Imported: