鼠标滚动 Java FX
Mouse scrolling in Java FX
我想用mouse scroll
把圆变大(mouse-scroll-up
),把圆变小(mouse-scroll-down
)。
我已有代码可以使用鼠标中键将圆半径变小,但我的问题是:
How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?
我用谷歌搜索过,可以用 ScrollEvent
以某种方式完成,但我不太明白这一点。
回答您的问题
How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?
- 在圆上使用
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);
});
}
}
我想用mouse scroll
把圆变大(mouse-scroll-up
),把圆变小(mouse-scroll-down
)。
我已有代码可以使用鼠标中键将圆半径变小,但我的问题是:
How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?
我用谷歌搜索过,可以用 ScrollEvent
以某种方式完成,但我不太明白这一点。
回答您的问题
How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?
- 在圆上使用
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);
});
}
}