gpt4 book ai didi

java - 如何检测 JavaFX 中的鼠标单击?

转载 作者:行者123 更新时间:2023-11-30 08:43:19 25 4
gpt4 key购买 nike

所以我开始尝试在我的应用程序中为不同的功能设置键,我想知道是否有一种方法可以设置鼠标右键/左键单击来执行某些操作?我无法在 KeyCode.java 中找到任何鼠标事件我不确定如何应用它。

这是我的代码:

public class Exercise_31 extends Application {

@Override
public void start(Stage primaryStage) throws Exception {

PendulumPane pendulumPane = new PendulumPane(500, 500);

Scene scene = new Scene(pendulumPane);
primaryStage.setTitle("Pendulum Animation");
primaryStage.setScene(scene);
pendulumPane.play();
primaryStage.show();


scene.setOnKeyPressed(e-> {
switch (e.getCode()) {
case UP: pendulumPane.increase(); break;
case DOWN: pendulumPane.decrease(); break;
case LEFTMOUSECLICK?
}
});


}

public static void main(String[] args) {
Application.launch(args);
}

private class PendulumPane extends Pane {

private double w = 400;
private double h;
PathTransition bPath;

Circle topC;
Circle lowerC;
Line line;
Arc arc;

PendulumPane(double width, double height) {

w = width;
h = height;
setPrefWidth(w);
setPrefHeight(h);
arc = new Arc(w / 2, h * 0.8, w * 0.15, w * 0.15, 180, 180);
arc.setFill(Color.TRANSPARENT);
arc.setStroke(Color.BLACK);

lowerC = new Circle(arc.getCenterX() - arc.getRadiusX(), arc.getCenterY(), 10);
topC = new Circle(arc.getCenterX(), arc.getCenterY() - h / 2, lowerC.getRadius() / 2);
arc = new Arc(topC.getCenterX(), topC.getCenterY(), w / 2, h / 2, 240, 60);
line = new Line(
topC.getCenterX(), topC.getCenterY(),
lowerC.getCenterX(), lowerC.getCenterY());

line.endXProperty().bind(lowerC.translateXProperty().add(lowerC.getCenterX()));
line.endYProperty().bind(lowerC.translateYProperty().add(lowerC.getCenterY()));
bPath = new PathTransition();
bPath.setDuration(Duration.millis(4000));
bPath.setPath(arc);
bPath.setNode(lowerC);
bPath.setOrientation(PathTransition.OrientationType.NONE);
bPath.setCycleCount(PathTransition.INDEFINITE);
bPath.setAutoReverse(true);

getChildren().addAll(lowerC, topC,line);

}

public void play() {
bPath.play();
}


public void increase() {
bPath.setRate(bPath.getCurrentRate() + 1);
}

public void decrease() {
bPath.setRate(bPath.getCurrentRate() - 1);
}

public void stop() {
bPath.setRate(bPath.getCurrentRate() * 0);
}

public void start() {
bPath.setRate(bPath.getCurrentRate() + 1);
}
}
}

我想要完成的是让右键单击鼠标按钮停止移动,然后左键单击再次启动它。我该怎么做?谢谢。

最佳答案

您的事件是 KeyEvent。如果您为鼠标定义了一个监听器(例如 setOnMouseReleased,您将获得一个 MouseEvent,并且在该监听器上您具有检查是否按下某些键的功能,这些键通常与鼠标点击:

event.isAltDown();
event.isControlDown();
event.isMetaDown();

如果您需要更多东西,则必须自己实现。请参阅 MouseEvent 的 JavaDoc .

关于java - 如何检测 JavaFX 中的鼠标单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com