В настоящее время я создаю мобильное приложение в JavaFx с помощью плагинов GluonMobile и пытаюсь найти способ узнать, просто ли пользователь нажимает кнопку или кнопка нажимается более 2 секунд.
Я пробую пару вещей и сталкиваюсь с какой-то проблемой.
Дело в том, что я нашел этот метод в Интернете, и он - моя проблема
Сначала код
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");
}
}
});
Проблема, которая у меня здесь, действительно странная.
Когда я нажимаю кнопку, метод работает. Если я нажму более 2 секунд, то получится хороший результат.
НО
Если я нажму второй раз, он напечатает PrintLn 2 раза. Если я щелкну в третий раз, результат будет напечатан 3 раза ...
Так что проблема в том, что когда я помещаю метод (скажем, dialogBox), окно будет отображаться 3 раза.
Это похоже на то, что программа запомнила, сколько раз я нажимаю на нее и дает результат, сколько раз я нажимаю кнопку.
Можно ли "сбросить" память метода?
Спасибо.
JC
РЕДАКТИРОВАТЬ
@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");
}
}
});
}