当前位置: 首页 > 知识库问答 >
问题:

ScrollPane javafx自动滚动(将vvalue设置为1.0)只滚动到最后一个

牟波
2023-03-14

共有1个答案

谢选
2023-03-14

设置新的vvalue发生在修改vbox导致的布局传递之前,但结果应用于布局传递之前。因为视图中显示的顶部y坐标的公式是

top = max(0, vvalue * (contentHeight - viewportHeight))

在布局传递过程中,内容的左上角保持不变,您可以在视口的底部看到旧内容的底部。

要解决此问题,可以使用以下方法scrollpane上手动触发布局传递

scrollPane.applyCss();
scrollPane.layout();
@Override
public void start(Stage primaryStage) {
    VBox content = new VBox();
    ScrollPane scrollPane = new ScrollPane(content);
    VBox.setVgrow(scrollPane, Priority.ALWAYS);
    Button button = new Button("fill");
    button.setOnAction(evt -> {
        for (int i = 0; i < 20; i++) {
            content.getChildren().add(new Text(Integer.toString(i)));
        }
        System.out.println("content size before layout: " + content.getHeight());

        // manually layout scrollPane
        scrollPane.applyCss();
        scrollPane.layout();

        System.out.println("content size after layout: " + content.getHeight());
        scrollPane.setVvalue(1d);
    });

    Scene scene = new Scene(new VBox(button, scrollPane), 200, 200);
    primaryStage.setScene(scene);
    primaryStage.show();
}
 类似资料:
  • 我使用JavaFX ListView作为聊天应用程序的聊天室主体。当消息到来或正在发送时,我会添加到listview。这很好,但我总是不得不滚动找到最新的消息。有没有任何方法,我可以自动滚动到底部,以便显示最新的消息,而不必一直向下滚动?

  • 我尝试过这样做: 但是它什么也不做,所以我做了一个循环来按步骤滚动页面: 它有点工作,但我不知道一个给定的页面有多长,所以我必须输入一个大的数字作为最大高度,这给了我两个问题。第一个是,即使是一个很大的数字也不足以滚动某些页面,第二个是,如果页面短于此限制,那么当脚本什么都不做时,等待脚本完成的时间会损失很多

  • 自动滚动只有当我手动滚动到底部一次来“让它继续”时才起作用,如果这有任何意义的话。一旦它被滚动到底部,新项的行为与预期的一样,滚动条自动下降,跟踪ListView的内容。不确定这里可能有什么问题,显然滚动条只有在需要时才会出现,不确定这是否与此有关。 你知道吗?

  • 我的问题:我的ListView中的一个项目在我开始滚动后会动画。它不是最后一项,动画应该完成。一旦问题消失,我滚动后,它只发生一次,并且只发生在列表中的单个项目上。 在我开始滚动ListView之后,如何停止单个项目的动画制作? 我希望在将项目添加到适配器时,动画仅运行一次。 我有一个列表适配器,当项目添加到列表中时,我在其中对它们进行动画处理。我正在使用声明的动画器在适配器的getView()方

  • 本文向大家介绍fullpage.js最后一屏滚动方式,包括了fullpage.js最后一屏滚动方式的使用技巧和注意事项,需要的朋友参考一下 这两天公司网页改版用到fullpage.js这个滚屏插件,页面内容整屏的滚动,不成问题,各种设置在网上也都有文档。 而我遇到的问题就是,页面内容不满屏的时候,和上面的内容放一块就太挤,单独放一屏就太空,好尴尬的说 底部的footer部分就是我要单独处理的部分,

  • 问题内容: 我正在使用iOS 8新的自动调整大小的单元格。外观上效果很好-每个单元格都有合适的大小。但是,如果我尝试 滚动到最后一行 ,则表视图似乎不知道其正确大小。这是一个错误还是有解决办法? 重新创建问题的方法如下: 使用这个项目-TableViewCellWithAutoLayoutiOS8(从该SO答案引用),我按预期得到了自动调整大小的单元格。 但是,如果我要调用 scrollToRow