-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
8u92
-
x86_64
-
linux
FULL PRODUCT VERSION :
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux dmovcc 3.19.0-32-generic #37~14.04.1-Ubuntu SMP Thu Oct 22 09:41:40 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
After call "getRoot().getChildren().clear()", all tree item icons are still visible on the screen.
REGRESSION. Last worked in version 8u77
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run the code snippet I attached to this bug report.
2. Click on "Clear all" button.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Only the root TreeItem must be visible.
ACTUAL -
The root TreeItem and icons of the old children are visible.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package sample;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.TextFieldTreeTableCell;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
final Image img1 = new Image("http://icons.iconarchive.com/icons/icons8/windows-8/24/Programming-Bug-icon.png", true);
final Image img2 = new Image("http://icons.iconarchive.com/icons/iconsmind/outline/24/Bug-icon.png", true);
final TreeTableView<String> treeTableView = new TreeTableView<>(new TreeItem<>("root", new ImageView(img1)));
final TreeTableColumn<String, String> column1 = new TreeTableColumn<>("Col 1");
column1.setPrefWidth(400);
column1.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getValue()));
column1.setCellFactory(TextFieldTreeTableCell.forTreeTableColumn());
treeTableView.getColumns().add(column1);
final TreeTableColumn<String, String> column2 = new TreeTableColumn<>("Col 2");
column2.setPrefWidth(200);
column2.setCellValueFactory(param -> new SimpleStringProperty(Integer.toString(param.getValue().getValue().length())));
column2.setCellFactory(TextFieldTreeTableCell.forTreeTableColumn());
treeTableView.getColumns().add(column2);
treeTableView.setTreeColumn(column1);
treeTableView.getRoot().getChildren().add(new TreeItem<>("child1", new ImageView(img1)));
treeTableView.getRoot().getChildren().add(new TreeItem<>("child2", new ImageView(img2)));
treeTableView.getRoot().getChildren().add(new TreeItem<>("child3", new ImageView(img1)));
treeTableView.getRoot().getChildren().add(new TreeItem<>("child4", new ImageView(img2)));
treeTableView.getRoot().setExpanded(true);
final Button clearAllButton = new Button("Clear all");
clearAllButton.setOnAction(event -> treeTableView.getRoot().getChildren().clear());
final ToolBar toolBar = new ToolBar(clearAllButton);
final BorderPane root = new BorderPane(treeTableView, toolBar, null, null, null);
primaryStage.setTitle("TreeTableView bug");
primaryStage.setScene(new Scene(root, 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
---------- END SOURCE ----------
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux dmovcc 3.19.0-32-generic #37~14.04.1-Ubuntu SMP Thu Oct 22 09:41:40 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
After call "getRoot().getChildren().clear()", all tree item icons are still visible on the screen.
REGRESSION. Last worked in version 8u77
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run the code snippet I attached to this bug report.
2. Click on "Clear all" button.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Only the root TreeItem must be visible.
ACTUAL -
The root TreeItem and icons of the old children are visible.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package sample;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.TextFieldTreeTableCell;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
final Image img1 = new Image("http://icons.iconarchive.com/icons/icons8/windows-8/24/Programming-Bug-icon.png", true);
final Image img2 = new Image("http://icons.iconarchive.com/icons/iconsmind/outline/24/Bug-icon.png", true);
final TreeTableView<String> treeTableView = new TreeTableView<>(new TreeItem<>("root", new ImageView(img1)));
final TreeTableColumn<String, String> column1 = new TreeTableColumn<>("Col 1");
column1.setPrefWidth(400);
column1.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getValue()));
column1.setCellFactory(TextFieldTreeTableCell.forTreeTableColumn());
treeTableView.getColumns().add(column1);
final TreeTableColumn<String, String> column2 = new TreeTableColumn<>("Col 2");
column2.setPrefWidth(200);
column2.setCellValueFactory(param -> new SimpleStringProperty(Integer.toString(param.getValue().getValue().length())));
column2.setCellFactory(TextFieldTreeTableCell.forTreeTableColumn());
treeTableView.getColumns().add(column2);
treeTableView.setTreeColumn(column1);
treeTableView.getRoot().getChildren().add(new TreeItem<>("child1", new ImageView(img1)));
treeTableView.getRoot().getChildren().add(new TreeItem<>("child2", new ImageView(img2)));
treeTableView.getRoot().getChildren().add(new TreeItem<>("child3", new ImageView(img1)));
treeTableView.getRoot().getChildren().add(new TreeItem<>("child4", new ImageView(img2)));
treeTableView.getRoot().setExpanded(true);
final Button clearAllButton = new Button("Clear all");
clearAllButton.setOnAction(event -> treeTableView.getRoot().getChildren().clear());
final ToolBar toolBar = new ToolBar(clearAllButton);
final BorderPane root = new BorderPane(treeTableView, toolBar, null, null, null);
primaryStage.setTitle("TreeTableView bug");
primaryStage.setScene(new Scene(root, 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
---------- END SOURCE ----------