The patch below resolves the issue, but it is not likely the correct solution (we are trying to determine the table width, but we are getting the width and padding on the underlying virtualflow (the width is fine, the padding should really come from tableview directly):
diff --git a/modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableRowSkinBase.java b/modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableRowSkinBase.java
--- a/modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableRowSkinBase.java
+++ b/modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableRowSkinBase.java
@@ -680,8 +680,8 @@
double end = start + col.getWidth();
// determine the width of the table
- final Insets padding = getSkinnable().getPadding();
- double headerWidth = getSkinnable().getWidth() - padding.getLeft() + padding.getRight();
+ final Insets padding = getVirtualFlow().getPadding();
+ double headerWidth = getVirtualFlow().getWidth() - padding.getLeft() + padding.getRight();
return (start >= scrollX || end > scrollX) && (start < (headerWidth + scrollX) || end <= (headerWidth + scrollX));
}
This patch does however help scrolling performance drastically when there are considerable numbers of columns, e.g.
- blocks
-
JDK-8277000 Tree-/TableRowSkin: replace listener to fixedCellSize by live lookup
- Open
- duplicates
-
JDK-8185886 Improve scrolling performance of TableView and TreeTableView
- Closed
- relates to
-
JDK-8252566 TreeTableView: broken row layout for fixedCellSize
- Resolved
-
JDK-8252811 The list of cells in a VirtualFlow is cleared every time the number of items changes
- Resolved
-
JDK-8252936 Optimize removal of listeners from ExpressionHelper.Generic
- Open
-
JDK-8252935 Add treeShowing listener only when needed
- Resolved
-
JDK-8166956 JavaFX TreeTableView slow scroll performance
- Closed
-
JDK-8185886 Improve scrolling performance of TableView and TreeTableView
- Closed
- links to
-
Commit(master) openjdk/jfx/1b12c8a4
-
Review openjdk/jfx/125
-
Review(master) openjdk/jfx/1644