JavaFX-сделать ScrollPane прокрутки автоматически
У меня есть метка в scrollpane. Я обновляю метку в цикле (в другом потоке). Как я могу обновить панель прокрутки, чтобы она прокручивалась вниз (не в сторону, это будет сделано вручную), если пользователь не удерживает ее в определенном положении? Есть ли для этого сеттер?
6 ответов:
Чтобы установить ScrollPane в нижней части автоматически установите
vvalue
элемента ScrollPane, как это:@FXML private ScrollPane scroll; //this must match the fx:id of the ScrollPane element scroll.setVvalue(1.0); //1.0 means 100% at the bottom
Если вы используете HBox или VBox в пределах ScrollPane, попробуйте следующее:
hBox.heightProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldvalue, Object newValue) { scrollPane.setHvalue((Double)newValue ); } });
@Math спасибо, это сработало!
@FXML private ScrollPane scroll; //this must match the fx:id of the ScrollPane element or be the scrollpane object scroll.setVvalue(1.0); //1.0 means 100% at the bottom
И я решил проблему "должен смотреть на вкладку" с этой частью кода
tab.setOnSelectionChanged(new EventHandler<Event>() { @Override public void handle(Event arg0) { ScrollPane.setVvalue(1.0); } });
Это работает в моем коде:
scrollPane.vvalueProperty().bind(mainGrid.heightProperty());
В моем случае scrollPane содержит mainGrid
Чтобы полностью прокрутить панель прокрутки вниз, установите ее
vvalue
СВОЙСТВО to1.0
:scrollPane.setVvalue(1D);
Примечание это может не сработать при вызове после изменения размера содержимого области прокрутки.
В таком случае, если задержка вызова черезPlatform.runLater()
не устраняет проблему, рассмотрите возможность установки значения свойства в ответ на содержимоеheight
СВОЙСТВО событие признания недействительным:vBox.heightProperty().addListener(observable -> scrollPane.setVvalue(1D));