I'm currently building a Mobile app in JavaFx with the GluonMobile plugins and I try to find a way to know if the user just tap the button or if the button is pressed for over 2 second.
I try a couple of thing and I run into some problem.
The thing is I found this method on the web and he's my problem
First the code
button.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
long startTime;
@Override
public void handle(MouseEvent event) {
if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED)) {
startTime = System.currentTimeMillis();
} else if (event.getEventType().equals(MouseEvent.MOUSE_RELEASED)) {
if (System.currentTimeMillis() - startTime > 2 * 1000) {
System.out.println("Pressed for at least 2 seconds (" + (System.currentTimeMillis() - startTime) + " milliseconds)");
} else
System.out.println("Pressed for " + (System.currentTimeMillis() - startTime) + " milliseconds");
}
}
});
The problem that I have here is really weird.
When I click the button the method work. If I click for over 2 sec it will printLn the good result.
BUT
If I click a second time on it it will print the PrintLn 2 times. If I click a 3rd time, it will print the result 3 time...
So the problem is when I put a method (let's say a dialogBox) the box will show 3 times.
It's like if the program had a memory of how many time I click it and give me the result the number of time I click the button.
Can I "reset" the memory of the method?
Thanks.
Jc
EDIT
@FXML
public void buttonClick(ActionEvent actionEvent) {
btn1.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
long startTime;
@Override
public void handle(MouseEvent event) {
if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED)) {
startTime = System.currentTimeMillis();
} else if (event.getEventType().equals(MouseEvent.MOUSE_RELEASED)) {
if (System.currentTimeMillis() - startTime > 2 * 1000) {
System.out.println("Pressed for at least 2 seconds (" + (System.currentTimeMillis() - startTime) + " milliseconds)");
} else
System.out.println("Pressed for " + (System.currentTimeMillis() - startTime) + " milliseconds");
}
}
});
}