gpt4 book ai didi

JavaFX 检查事件的 KeyCode 是否为数字键

转载 作者:行者123 更新时间:2023-11-30 06:21:10 25 4
gpt4 key购买 nike

我正在创建一个自定义文本字段类,其中我有一个自定义行为,具体取决于用户是否在其上键入数字键。

!event.getCode().isDigitKey() 始终返回 true,即使我输入数字也是如此。我试图检查 KeyCode 是否也是一个字母,但它仍然返回 false。这里似乎有什么问题?

在对照任何其他 KeyCode 检查事件的 KeyCode 时,即使它们应该相等,我总是得到 false。

public class ScoreField extends TextField implements Customizable {

public ScoreField() {
super();
customize();
}

@Override
public void customize() {
this.setOnKeyTyped(new EventHandler<KeyEvent>() {
int curChar = 0;

@Override
public void handle(KeyEvent event) {
event.consume();
KeyCode keyTyped = event.getCode();
char charTyped = event.getCharacter().charAt(0);

System.out.println(charTyped);

// Do nothing if not a digit
if (!event.getCode().isDigitKey()) {
System.out.println("NOT A DIGIT KEY");
if (keyTyped == KeyCode.BACK_SPACE) {
System.out.println("RESETTING");
resetText();
return;
}
return;
}

if (getText().length() >= 5) {
if (curChar == 2) {
curChar = 3;
}
if (curChar == 5) {
curChar = 0;
}
StringBuilder builder = new StringBuilder(getText());
builder.setCharAt(curChar, charTyped);
setText(builder.toString());
curChar++;
return;
}
if (getText().length() == 2) {
setText(getText() + ":");
}
setText(getText() + charTyped);
}
});
}

private void resetText() {
setText("");
}

}

最佳答案

正如 James_D 所说:

For key typed events, the code is always KeyCode.UNDEFINED

所以我按照他的建议做了,而不是检查 KeyCode 是否是数字,而是使用 Character.isDigit(char) 检查 event.getCharacter()[0] > 在第一个 if 语句中,它非常适合我的情况。

P.S:我尝试将 TextFormatter 与 StringConverter 一起使用,但无法让它工作。

关于JavaFX 检查事件的 KeyCode 是否为数字键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com