我的程序包含一个与 Scrollbar() 对象分组的 vbox。我想出了如何让它用鼠标滚轮滚动,但是当它在 vbox 或窗口内时我需要它用鼠标滚轮滚动(它目前只在悬停在滚动条上时滚动)。我还想加快它滚动的速度。我对 javafx 还很陌生,因此非常感谢您的帮助!
当前滚动方法:
public void addMouseScrolling(Node node) {
node.setOnScroll((ScrollEvent event) -> {
// scroll up or down
node.setTranslateY(node.getTranslateY() + event.getDeltaY());
});
}
关于滚动条和分组对象的代码(如果需要):
Group root = new Group();
ScrollBar sc = new ScrollBar();
sc.setMin(0);
sc.setMax(650);
sc.setPrefHeight(200);
sc.setOrientation(Orientation.VERTICAL);
// tile pane is created
VBox vbox = new VBox(5);
vbox.getChildren().add(btnC);
vbox.getChildren().add(btnD);
vbox.getChildren().add(btnO);
vbox.getChildren().add(btnG);
vbox.getChildren().add(btnJ);
vbox.setLayoutX(25);
root.setLayoutY(15);
sc.setLayoutX(1);
primaryStage.setScene(new Scene(root, 250, 650));
root.getChildren().addAll(vbox, sc);
sc.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) {
vbox.setLayoutY(-new_val.doubleValue());
}
});
(已编辑:使用触控板滚动已解决)