【发布时间】:2018-06-28 05:49:20
【问题描述】:
基于this example(选项#1)我在SplitPane 中使用2 个TableViews 创建一个固定列。
显示其他列(不是固定列)的TableView 可能会变得如此宽,以至于显示ScrollBar,为此我必须用-fx-padding: 0 0 13px 0; 进行补偿,以保持TableRows 的@987654328 @s 对齐。
所以我现在必须弄清楚是否正在显示ScrollBar,或者找到一种完全不同的方法来确保TableRow 对齐。不幸的是,显而易见的方法似乎不起作用。 (ScrollBar 不是null,我只是没有发布代码来确保这一点)
ScrollBar horizontalScrollBar = (ScrollBar) lookup(".scroll-bar:horizontal");
horizontalScrollBar.visibleProperty().addListener((observable, oldValue, newValue) -> {
System.out.println(newValueobservableScrollBar);
});
由于某种原因,当ScrollBar 出现或消失时,Listener 没有被触发。
【问题讨论】:
-
我猜
ScrollBar已完全从场景中移除,而不是只是变得不可见。 (无论如何,这对于布局性能来说是更有效的方法......您可以通过向scene属性添加一个侦听器并检查null来收听,但ScrollBar的确切显示/隐藏方式是一个实现细节和代码可能会在 Java 运行时更新时中断......)。 -
所以你的意思基本上只是用
sceneProperty()替换visibleProperty()?
标签: tableview javafx-8 scrollbar