我尝试以某种方式绑定TableView
滚动到ScrollPane
的滚动条。
我可以从两个滚动条中获取引用,但我无法绑定它们。
我还发现滚动条的值不同,
TableView
的滚动条的值介于0和100之间,而Scrollpane
的值介于0和1之间。
到目前为止,我已尝试过:
我如何得到参考:
private static ScrollBar getScrollBar(Control source) {
ScrollBar scrollBar = null;
for (Node node : source.lookupAll(".scroll-bar")) {
if (node instanceof ScrollBar && ((ScrollBar) node).getOrientation().equals(Orientation.HORIZONTAL)) {
scrollBar = (ScrollBar) node;
}
}
return scrollBar;
}
然后:
public static void bindScrollBars(ScrollPane scrollPane, TableView<?> table) {
ScrollBar scrollBarPane = getScrollBar(scrollPane);
ScrollBar scrollBarTable = getScrollBar(table);
scrollBarPane.valueProperty().bindBidirectional(scollBarTable.valueProperty())
}
这种方式适用于绑定本身但我需要绑定乘以或除以100以将它们缩放到相同的级别。
如果我尝试添加.multyply(100)
或.divide(100)
因为显而易见的原因而无法工作,但我不知道如何将它们双向绑定到同一级别或0..100或0..1。
你能提出任何解决方案吗?
第二个问题是如果我能得到前一个的解决方案,那么我怎么能绑定两个以上Control
的滚动条?例如,如果我有4 Control
s(ScrollPane,TableView,TreeTableView,TreeTableView),我如何确保所有这些组件&#39; scollbars彼此绑定?
P.S。如果我尝试不使用双向绑定,只需绑定例如:
scrollBarPane.valueProperty().bind(scrollBarTable.valueProperty().divide(100));
我收到一个RuntimeException,消息为:ScrollBar.value: A bound value cannot be set.