如何防止在javafx中的SrollPane中自动滚动

时间:2018-01-12 08:24:55

标签: java javafx javafx-8

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

注意:在vBox内部我有一些按钮可以添加/删除一些TextFields,这会导致VBox高度增加/减少。

由于工作规定,我无法显示整个代码,但这里是我在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);

1 个答案:

答案 0 :(得分:1)

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

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