gpt4 book ai didi

java - 如何在 JavaFX 中使用时间轴进行双击?

转载 作者:行者123 更新时间:2023-12-04 08:30:41 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





how to differentiate between a single click or double click on a table row in javafx

(2 个回答)


9 个月前关闭。




这是我到目前为止所做的,它工作得很好,但是当我双击时,双击事件被触发,单击事件被触发,当我单击时,当然只有单击被触发。

long currentMillis = System.currentTimeMillis();

addEventFilter(MouseEvent.MOUSE_CLICKED, e -> {

long currentClickedMillis = System.currentTimeMillis();
long diffMillis = currentClickedMillis - currentMillis;
currentMillis = currentClickedMillis;
if (diffMillis > 500) {
fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_CLICKED, this.aircraft));
} else {
fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_DOUBLE_CLICKED, this.aircraft));
}
});
Stack Overflow 上的其他解决方案不起作用!他们只是计算点击次数,但仍然存在与我现在相同的问题。

最佳答案

我曾经遇到过同样的问题,也找不到解决方案,所以我不得不开发自己的解决方案。
为此,我使用了 Javafx 的 Timeline这将使您能够在第一次单击时开始时间线,并且根据您之后是否进行第二次单击,它会认为它是单击还是双击,但永远不会同时单击同时。
这是我的解决方案:

// initialize your timeline
final Timeline clickTimeline = new Timeline();
// minimum duration of a double click 500ms
Duration clickDuration = Duration.millis(500);
KeyFrame clickKeyFrame = new KeyFrame(clickDuration);
boolean isClickTimelinePlaying = false;
clickTimeline.getKeyFrames().add(clickKeyFrame);

addEventFilter(MouseEvent.MOUSE_CLICKED, e -> {
if (isClickTimelinePlaying) {
// when clicking the second time before the time line finishes
isClickTimelinePlaying = false;
fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_DOUBLE_CLICKED, this.aircraft));
clickTimeline.stop();
} else {
// when clicking for the first time
isClickTimelinePlaying = true;
// start the timeline
clickTimeline.play();
});
}

// if timeline finises without receiving a second click, consider it a single click
clickTimeline.setOnFinished(event -> {
fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_CLICKED, this.aircraft));
isClickTimelinePlaying = false;
});


关于java - 如何在 JavaFX 中使用时间轴进行双击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65036445/

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