如何防止在 javafx 中的 SrollPane 中自动滚动
How to prevent autoscroll in SrollPane in javafx
我正在开发一个在 ScrollPane 中有一个 VBox 的 javafx 项目。问题是当 vBox 的高度减小时,scrollPane 会自动向上滚动。我怎样才能防止呢?知道高度增加不滚动!
注意:在 vBox 中我有一些按钮 add/remove 一些 TextFields 导致 VBox 高度的 increasing/decreasing。
由于工作规定,我无法显示整个代码,但这是我在 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 自动滚动到该元素。
要更改此设置,您可以在删除按钮 or/and TextField 之前在代码中添加例如 mainVBox.requestFocus();
。
我正在开发一个在 ScrollPane 中有一个 VBox 的 javafx 项目。问题是当 vBox 的高度减小时,scrollPane 会自动向上滚动。我怎样才能防止呢?知道高度增加不滚动!
注意:在 vBox 中我有一些按钮 add/remove 一些 TextFields 导致 VBox 高度的 increasing/decreasing。
由于工作规定,我无法显示整个代码,但这是我在 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 自动滚动到该元素。
要更改此设置,您可以在删除按钮 or/and TextField 之前在代码中添加例如 mainVBox.requestFocus();
。