Ich habe meinen Code korrigiert und jetzt funktioniert es mit der Maus Scroll, aber ich kann nur nach unten scrollen. Es passiert, weil ich "val + = sb.getUnitIncrement()" eingestellt habe, also dachte ich, eine Bedingung einzufügen, um zu erkennen, ob ich nach oben oder unten blättern kann und ob ich "val - = sb.unitIncrement()" nach oben scrollen kann. Das Problem ist, dass ich diese Methode nicht finden konnte. Was soll ich verwenden?ScrollEvent in meiner Szene
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);
}
}
});
}
});
}
In 'scroll()' setzen Sie 'setOnScroll' der Bühne, um' moveImage() 'beim Scrollen aufzurufen. Dann fügen Sie in 'moveImage' immer wieder einen Listener hinzu ... – DVarga
Ich habe die Frage aktualisiert –
Wäre es nicht einfacher, das Bild in eine' ScrollPane' zu bringen und es für Sie arbeiten zu lassen? – DVarga