代码之家  ›  专栏  ›  技术社区  ›  Sunflame

JavaFx:绑定TableView和ScrollPane的滚动条

  •  0
  • Sunflame  · 技术社区  · 7 年前

    我正试图以某种方式绑定一个 TableView 的滚动到 ScrollPane 我可以从两个滚动条中获得引用,但我无法绑定它们。 表视图 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) 你能提出什么解决方案吗?

    第二个问题是,如果我能得到前一个问题的解,那么我怎么能绑定两个以上的呢 Control 的滚动条?例如,如果我有4个 s(ScrollPane、TableView、TreeTableView、TreeTableView),如何确保所有这些组件的scollbar相互绑定?

    P、 如果我尝试不使用双向绑定,只需绑定,例如:

    scrollBarPane.valueProperty().bind(scrollBarTable.valueProperty().divide(100));
    

    我得到一个RuntimeException,消息如下: ScrollBar.value: A bound value cannot be set.

    0 回复  |  直到 7 年前