Javafx如何在使用鼠标滚轮悬停在vbox/window上时加速滚动条和滚动

时间:2021-04-26 05:43:13

标签: javafx

我的程序包含一个与 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());
           }
        });        

(已编辑:使用触控板滚动已解决)

0 个答案:

没有答案