我正在开发一个在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);
答案 0 :(得分:1)
此行为的原因是您删除了当前具有焦点的元素。这导致焦点转移到容器中的第一个元素,ScrollPane会自动滚动到此元素。
要更改此设置,您可以在删除Button或/和TextField之前在代码中添加例如mainVBox.requestFocus();
。