java - 如何防止javafx中SrollPane自动滚动

标签 java javafx javafx-8

我正在开发一个 javafx 项目,该项目在 ScrollPane 中有一个 VBox。问题是,当 vBox 的高度减小时,scrollPane 自动向上滚动。我怎样才能防止这种情况发生?知道高度增加时它不会滚动!

注意:在垂直框内,我有一些按钮可以添加/删除一些文本字段,从而导致垂直框高度的增加/减少。

由于工作规定,我无法显示整个代码,但这里是我在 ScrollPane 中定义和添加 VBox 的位置:

    VBox mainVBox = new VBox();
    mainVBox.setStyle("-fx-background-color: #0292b7");
    mainVBox.setPrefWidth(400); 
    mainVBox.setSpacing(10);
    mainVBox.setPadding(new Insets(3,5,3,5));
    ScrollPane scrollPane = new ScrollPane();
    scrollPane.setContent(mainVBox);
    scrollPane.setPrefWidth(420);
    scrollPane.setPrefHeight(600);
    VBox.setVgrow(scrollPane,Priority.ALWAYS);

最佳答案

此行为的原因是您删除了当前具有焦点的元素。这导致焦点转移到容器中的第一个元素,并且 ScrollPane 自动滚动到该元素。

要更改此设置,您可以在删除 Button 或/和 TextField 之前在代码中添加例如 mainVBox.requestFocus();

关于java - 如何防止javafx中SrollPane自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222199/

相关文章:

java - 如何获取java程序的输出?

java - 如何同步Java和JavaFX线程?

JavaFX 8,带有复选框滚动 Pane 的 ListView 问题

unit-testing - 使用 JavaFx 和 TestFx 进行 headless 测试

java - JAVAFX中的滚动条

java - 二进制 XML 文件行 # : Error inflating class <unknown> using an ArrayAdapter and AsyncTask

java - 使用 Angular 7 前端启动 Spring-Boot 应用程序时无法加载资源错误(缺少资源)

javafx有时无法检测到多键输入

Java 11/JavaFX 11/Module Deployment Mess(可运行的 Jar,如果单击则有效,但如果从命令行运行则无效)

java - 如何在 Android 中获取 IST 时区