gpt4 book ai didi

java - 区分真正的鼠标点击和火灾方法

转载 作者:行者123 更新时间:2023-12-01 09:53:04 28 4
gpt4 key购买 nike

我正在使用 javaFX 创建应用程序。我在某处有一个超链接,并为其设置了一个 (onAction) ,如下所示

Hyperlink studentList = ...;  // It's given proper object
studentList.setOnAction(...);

现在在其他地方我使用此方法来模拟对此超链接的点击

studentList.fire();

现在我的问题是如何区分真正的点击/按键和 fire() 方法?

最佳答案

这是一种方法。只需将 EventHandler 添加到 setOnMousePressed 属性即可。请务必将其添加到 setOnMousePressed 而不是例如setOnMouseClicked,因为 setOnMousePressed 在调用 fire() 之前调用,而 setOnMouseClicked 在之后调用。

import javafx.application.Application;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Hyperlink;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class MCVE extends Application {
@Override
public void start(Stage stage) {
VBox content = new VBox(5);
content.setPadding(new Insets(10));

Hyperlink link = new Hyperlink("Hyperlink");

Button fireButton = new Button("Fire hyperlink");
fireButton.setOnAction(e -> link.fire());

BooleanProperty mouseClicked = new SimpleBooleanProperty(false);

link.setOnMousePressed(e -> {
System.out.println("Mouse click");
mouseClicked.set(true);
});

link.setOnAction(e -> {
if (!mouseClicked.get()) {
System.out.println("No mouse click");
}
mouseClicked.set(false);
});

content.getChildren().addAll(link, fireButton);

stage.setScene(new Scene(content));
stage.show();
}

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

关于java - 区分真正的鼠标点击和火灾方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481136/

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