Я исправил свой код, и теперь он работает с прокруткой мыши, но я могу прокручивать вниз. Это происходит потому, что я установил «val + = sb.getUnitIncrement()», поэтому я решил вставить условие, чтобы определить, прокручиваю ли я вверх или вниз, и если я просматриваю «val - = sb.unitIncrement()». Проблема в том, что я не смог найти этот метод. Что я должен использовать?ScrollEvent на моей сцене
private double val = 0;
@FXML
private Button back;
@FXML
private AnchorPane Instructions;
@FXML
private ImageView image;
@FXML
private ScrollBar sb;
private void scroll() {
sb.sceneProperty().addListener((ObservableValue<? extends Scene> observable, Scene oldValue, Scene newValue) -> {
if (newValue != null) {
sb.getScene().setOnScroll((ScrollEvent event) -> {
if (val < sb.getMax()) {
val += sb.getUnitIncrement();
image.setLayoutY(-val);
if (val < sb.getMax() - sb.getUnitIncrement()) {
back.setVisible(false);
} else if (val >= sb.getMax() - sb.getUnitIncrement()) {
back.setVisible(true);
}
}
});
}
});
}
В 'scroll()' вы устанавливаете 'setOnScroll' этапа для вызова' moveImage() 'на прокрутке. Затем в 'moveImage' вы добавляете слушателя снова и снова и снова ... – DVarga
Я обновил вопрос –
Не было бы проще разместить изображение в' ScrollPane' и позволить ему выполнять эту работу за вас? – DVarga