2017-02-18 8 views
0

Я пытаюсь смоделировать приложение sms с помощью ввода с клавиатуры, как в старых телефонах, где вам нужно было щелкнуть f.e. кнопку «2» два раза, чтобы набрать букву «b», три раза для «c» и т. д. У меня есть несколько кнопок, и для каждого мне нужно установить какую-то задержку, чтобы я мог щелкнуть столько раз, сколько захочу буквы или символа. Я знаю, что есть java.util.Timer, который может пригодиться здесь, но я не понимаю, как применить его в этой ситуации и как отложить задержку только после первого нажатия кнопки «не» после каждого следующего. Ниже приведен пример элемента FXML, который я использую в своем коде и метод, который вызывается при нажатии кнопки.Счетчик кликов с помощью таймера в JavaFX

... 
@FXML 
Button button_2; 

... 

public void handleButton2(){ 
    //Code to execute to count clicks ? 
    ... 
    //Array of Strings instead of Characters to use .appendText without parsing 
    String []letters = {"a", "b", "c", "2"}; 
    sms_text_area.appendText(letters[/*index of letter*/]); 
} 
... 

ответ

1

Обратите внимание, что вы хотите изменить строку, представленную кнопкой, если она была последней нажатой.

В общем, для выполнения чего-либо после задержки используйте PauseTransition.

Так просто ввести некоторые дополнительные поля:

private Button lastButtonClicked ; 
private int buttonClickCount ; 

private final PauseTransition buttonPressDelay 
    = new PauseTransition(Duration.seconds(0.5)); 

, а затем

public void handleButton2(){ 

    String[] letters = {"a", "b", "c", "2"}; 

    buttonPressDelay.setOnFinished(e -> { 
     sms_text_area.appendText(letters[buttonClickCount]); 
     lastButtonClicked = null ; 
    }); 

    if (lastButtonClicked == button_2) { 
     buttonClickCount = (buttonClickCount + 1) % letters.length ; 
    } else { 
     buttonClickCount = 0 ; 
    } 
    buttonPressDelay.playFromStart(); 
    lastButtonClicked = button_2 ; 
} 
+0

Да, но этот путь мне еще нужен дополнительный контроллер на самом деле получить число отсчетов, что я спрашиваю способ установить задержку для вызова метода обработки. Таким образом, код сначала подсчитывает количество кликов, а затем автоматически вызывает обработчик без какого-либо дополнительного взаимодействия с пользователем. И.Е. дважды щелкнула кнопку «2», после того, как ~ половина второго контроллера получит количество кликов и добавит букву с индексом количества кликов. –

+0

Извините, нажмите «Ввести», чтобы начать, обновил комментарий. –

+0

У меня возникли проблемы с запоминанием того, как текстовые сообщения на этих телефонах работали :). См. Обновление, но я не думаю, что это совершенно правильно. –

 Смежные вопросы

  • Нет связанных вопросов^_^