package bugs.table.fixed.RT21170; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; public class TableDemo extends Application { public static final int NUMBER_OF_CHILDREN = 24; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { FlowPane pane = new FlowPane(); createSingleColumnTable(pane); createDualColumnTable(pane); stage.setScene(new Scene(pane)); stage.show(); } private void createSingleColumnTable(FlowPane pane) { pane.getChildren().add(new Label("Parent column's end does not match child column's end. Drag the parent's right border to the left to see the problem")); TableView view = new TableView(); pane.getChildren().add(view); TableColumn parentColumn = new TableColumn<>(); view.getColumns().add(parentColumn); addChildren(parentColumn); } private void createDualColumnTable(FlowPane pane) { pane.getChildren().add(new Label("Parent columns overlap. Drag the visible parent's right border to the left to see the problem")); TableView view = new TableView(); pane.getChildren().add(view); TableColumn parentColumn1 = new TableColumn<>(); view.getColumns().add(parentColumn1); addChildren(parentColumn1); TableColumn parentColumn2 = new TableColumn<>(); view.getColumns().add(parentColumn2); addChildren(parentColumn2); } private void addChildren(TableColumn parentColumn2) { for (int i = 0; i < NUMBER_OF_CHILDREN; i++) { TableColumn childColumn = new TableColumn<>(); childColumn.setSortable(false); parentColumn2.getColumns().add(childColumn); } } }