-
Bug
-
Resolution: Duplicate
-
P3
-
jfx11, 10
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 ----------
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 ----------
- duplicates
-
JDK-8196852 TreeView cell arrow does not rotate back when collapsed
-
- Open
-