在JavaFX中调整窗格大小后,是否可以保留ScrollBar位置?

时间:2016-09-06 14:28:03

标签: java javafx

所以我们假设我们有一个带有垂直ScrollBar的ScrollPane。

在ScrollPane内部,我们有一个可以垂直扩展的FlowPane。

在FlowPane中,我们有大量的小元素。

现在假设我的舞台窗口大小为500x500,滚动窗格上的ScrollBar位于0.5左右。

如果我展开舞台窗口并使其全屏显示,FlowPane尺寸也将扩展并且它将具有更多可用宽度,因此它的高度将会减少,因为它内部的元素将更多能够装入一排,因此流程窗口的行数会减少。

这将导致滚动条跳转到大约0.9(非常粗略)的位置

我不喜欢这种行为,我需要滚动条保持在0.5位置。

这可能吗?

1 个答案:

答案 0 :(得分:0)

可以通过将ListChangeListener附加到FlowPane的子项来实现。像这样:

        FlowPane flowPane=new FlowPane();
        ScrollPane scrollPane=new ScrollPane(flowPane);

        flowPane.getChildren().addListener(new ListChangeListener<Node>()
        {
            @Override
            public void onChanged(Change<? extends Node> c)
            {
                scrollPane.setHvalue(0.5); //sets the horizontal scroll
                scrollPane.setVvalue(0.5); //sets the vertical scroll
            }
        });