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

Icons in expanded state are also displayed for unexpanded nodes of TreeView.

XMLWordPrintable

    • b37
    • 10
    • x86_64
    • generic

      FULL PRODUCT VERSION :
      java version "10" 2018-03-20
      Java(TM) SE Runtime Environment 18.3 (build 10+46)
      Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      macOS High Sierra 10.13.3

      A DESCRIPTION OF THE PROBLEM :
      Icons in expanded state are also displayed for unexpanded nodes of TreeView.

      This bug occurs in JDK 10.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1) Execute the test
      2) Expand the node
      3) Scroll to see if the expansion state is correct

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The expanded state of all nodes is correct
      ACTUAL -
      The expanded state of some nodes is incorrect

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------

      import javafx.application.Application;
      import javafx.collections.ObservableList;
      import javafx.scene.Scene;
      import javafx.scene.control.TreeItem;
      import javafx.scene.control.TreeView;
      import javafx.scene.layout.BorderPane;
      import javafx.scene.layout.StackPane;
      import javafx.stage.Stage;

      public final class TreeViewExpandTest extends Application{
      private static final int DATA_SIZE = 1000;
      private static final int TREE_DATA_SIZE = 1000;

      private TreeView<String> treeView;

      @Override
      public void start(Stage primaryStage) throws Exception {
      buildTreeView();
      BorderPane borderPane = new BorderPane();
      borderPane.setCenter(new StackPane(treeView));

      final Scene scene = new Scene(borderPane, 800, 800);
      primaryStage.setScene(scene);
      primaryStage.sizeToScene();
      primaryStage.show();
      }

      private void buildTreeView() {
      Integer[] d1a = new Integer[DATA_SIZE];
      for(int i=0; i<d1a.length; i++) {
      d1a[i] = i;
      }
      this.treeView = new TreeView<String>();
      treeView.setFixedCellSize(25);
      final LazyLoadTreeItem treeItem = new LazyLoadTreeItem("Node");
      treeItem.setExpanded(true);
      treeView.setRoot(treeItem);
      treeView.setEditable(false);

      }

      private class LazyLoadTreeItem extends TreeItem<String>{
      LazyLoadTreeItem(String title){
      super(title);
      }
      @Override
      public ObservableList getChildren() {
      if(this.loaded) {
      return super.getChildren();
      }
      long t = System.currentTimeMillis();
      this.loaded = true;
      final String value = getValue();

      final LazyLoadTreeItem[] d1a = new LazyLoadTreeItem[TREE_DATA_SIZE];
      for(int i=0; i<d1a.length; i++) {
      d1a[i] = new LazyLoadTreeItem(value + "-" + String.valueOf(i));
      }
      final ObservableList<TreeItem<String>> children = super.getChildren();
      children.setAll(d1a);

      return children;
      }

      @Override
      public boolean isLeaf() {
      return false;
      }

      boolean loaded;
      }

      public static void main(String[] args) {
      Application.launch(args);
      }
      }

      ---------- END SOURCE ----------

            aghaisas Ajit Ghaisas
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: