【发布时间】:2018-02-06 21:45:31
【问题描述】:
在我的程序中,我需要在长按/单击按钮时执行操作。所以我决定创建一个方法,在其参数中获取按钮并在按钮单击超过 1 秒时返回一个布尔值:
public class EventOperations {
JFXButton button;
boolean result = false;
// Button long click
public EventOperations(JFXButton btn) {
button = btn;
}
public void isLongPressed() {
final AnimationTimer timer = new AnimationTimer() {
private long lastUpdate = 0;
@Override
public void handle(long time) {
if (this.lastUpdate > 2000000000) {
result = true;
System.out.println("PRESSED !!!!!!!!!");
}
this.lastUpdate = time;
}
};
button.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED)) {
timer.start();
} else {
timer.stop();
}
}
});
}
public boolean getIsPressed() {
return result;
}
}
MAIN.JAVA
EventOperations buttonPressed = new EventOperations(jfxButtonFolder);
buttonPressed.isLongPressed();
但每次我快速单击按钮时,它都会显示几个“PRESSED !!!”所以它不起作用。 2000000000 就是一个例子。 我该怎么做才能在我的主要 java 方法中获取布尔值,如果它被“按下”调用一个函数来做某事?
编辑!非常好用,谢谢!
【问题讨论】:
标签: class javafx click long-integer pressed