所以我开始在我的应用程序中设置不同功能的键,我想知道有没有办法设置鼠标右键/左键做什么?我无法在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);
}
}
}
我要做的是右键单击鼠标按钮停止移动并左键单击再次启动它。我该怎么办?谢谢。
答案 0 :(得分:2)
您的活动是KeyEvent
。如果您为鼠标定义了一个监听器(例如setOnMouseReleased
,则会得到一个MouseEvent
,并且在该监听器上您可以检查是否按下某些键,这些键通常与鼠标单击结合使用:
event.isAltDown();
event.isControlDown();
event.isMetaDown();
如果您需要更多东西,您必须自己实施。 请参阅JavaDoc以了解MouseEvent。