我正在使用JavaFX在Java中进行打字测试。我想将TextField中输入的文本与定义的随机单词进行比较。但是,TextField仅更新时有时输入的字母而不是所有时间。以下代码是发生此问题的地方。
field.setOnKeyTyped(e -> {
String typingWord = field.getText();
if( typingWord.isEmpty() &&
e.getCharacter().charAt(0) == '\b' &&
!(typedWords.size() == 0) &&
typingWord.equals(previousWord)){
field.setText(typedWords.get(typedWords.size() - 1));
typedWords.remove(typedWords.size() - 1);
field.positionCaret(typingWord.length());
index--;
}
//compare random words to typed words
if (Character.isWhitespace(e.getCharacter().charAt(0))) {
typedWords.set(index, typingWord);
field.clear();
e.consume();
index++;
}
previousWord = field.getText();
});
这纯粹是由于我的电脑速度还是只是JavaFX中的一个错误?
答案 0 :(得分:0)
先生,我不知道你想做什么,但我想提供帮助,所以在你的onKeyPressed()
或onKeyReleased()
中,它会提供KeyEvent
e
你的情况,你可以使用它代替Character.isWhitespace()
& e.getCharacter().charAt(0)
以及/b
获取KeyCode
field.setOnKeyTyped(e -> {
KeyCode kc = e.getCode(); // your keycode here is the character you just pressed
现在使用KeyCode,您可以检查很多好东西,而不会落入角色
平等检查
if(kc == KeyCode.BACK_SPACE)
//检查您的退格
if(kc.isWhitespaceKey())
//您的输入,标签,空格等
你也可以使用这些方法
TextField.deletePreviousChar();
,TextField.deleteNextChar();
可能会在清除之前为您节省所有选择。如果你想清除其中的10个,那么循环10次
最后为什么要检查空虚&稍后检查它是否为空