Mouse scrolling in Java FX

前端 未结 1 722
野的像风
野的像风 2021-02-15 19:05

I want to use mouse scroll to make circle bigger (mouse-scroll-up) and circle smaller (mouse-scroll-down).

I have existing code t

1条回答
  •  终归单人心
    2021-02-15 19:16

    Answering to your question

    How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?

    • Use a ScrollListener on the circle and use the ScrollEvent reference to get the DeltaY.
    • Create a zoomfactor to calculate the zoom factor you want to have.
    • Apply this factor to the Scale property of your node.

    Complete Example

    import javafx.application.Application;
    import javafx.scene.Group;
    import javafx.scene.Node;
    import javafx.scene.Scene;
    import javafx.scene.input.ScrollEvent;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Circle;
    import javafx.stage.Stage;
    
    public class ZoomInOutCircles extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            Group root = new Group();
            Scene scene = new Scene(root, 350, 300);
            primaryStage.setTitle("Dots");
            primaryStage.setScene(scene);
    
            Circle circle = new Circle(175, 150, 10, Color.BLUE);
            addMouseScrolling(circle);
            root.getChildren().add(circle);
    
            primaryStage.show();
        }
    
        public void addMouseScrolling(Node node) {
            node.setOnScroll((ScrollEvent event) -> {
                // Adjust the zoom factor as per your requirement
                double zoomFactor = 1.05;
                double deltaY = event.getDeltaY();
                if (deltaY < 0){
                    zoomFactor = 2.0 - zoomFactor;
                }
                node.setScaleX(node.getScaleX() * zoomFactor);
                node.setScaleY(node.getScaleY() * zoomFactor);
            });
        }
    }
    

    0 讨论(0)
提交回复
热议问题