Java FX 中的鼠标滚动

8

我想使用鼠标滚轮使圆变大(mouse-scroll-up)和变小(mouse-scroll-down)。

我已经有一段代码可以通过鼠标中键来缩小圆的半径,但我的问题是:

如何使用鼠标滚轮实现同样的效果?

我已经搜索了一下,似乎可以通过ScrollEvent来实现,但我无法理解这个方法。


你熟悉事件和事件处理程序吗? - VGR
1个回答

16

回答您的问题

如何使用鼠标滚轮向上和向下执行相同操作?

  • 在圆圈上使用ScrollListener并使用ScrollEvent引用获取DeltaY
  • 创建一个zoomfactor来计算您想要的缩放因子。
  • 将此因子应用于节点的比例属性。

完整示例

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);
        });
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接