我尝试使用键盘输入来模拟短信应用程序,就像在旧手机中一样,你必须点击f.e.按钮" 2"两次输入字母" b",三次输入" c"我有几个按钮,每个我需要设置一些延迟,所以我可以点击我想要的字母或符号的次数。我知道java.util.Timer在这里很方便,但我不明白如何在这种情况下应用它以及如何在第一次点击"按钮"不是每次下一次。 下面是我在我的代码中使用的FXML元素示例,以及单击按钮时调用的方法。
...
@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*/]);
}
...
答案 0 :(得分: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 ;
}