gpt4 book ai didi

Java KeyListener 控件

转载 作者:行者123 更新时间:2023-11-29 03:03:15 24 4
gpt4 key购买 nike

我使用 Key Listener 来读取用户的输入,但我遇到了问题。首先,我读到 JTextField“请输入您的姓名”。如果用户输入一个名字,例如 John,它将更改为 John。但是,如果用户输入无效字符,例如“7”,我想写“请输入您的姓名”,但它会写“请输入您的姓名7” 。它一直持续到给出正确的输入。我该如何纠正它们??

public void keyTyped(KeyEvent e) {
int ascii = (int)e.getKeyChar();
if((ascii >= 65 && ascii <=122) || (ascii <= 351 && ascii >= 199 )){
if(TextField1.getText().equals("Please enter your name"))
TextField1.setText("");
}
else
TextField1.setText("Please enter your name");
}

最佳答案

变量名不应以大写字符开头。

if((ascii >= 65 && ascii <=122) || (ascii <= 351 && ascii >= 199 )){

不要使用魔数(Magic Number)。如果您要检查小写/大写字母字符,请使用 Character 类中的方法,例如 isLetter(...)

不要使用 KeyListener 它是一个旧的 API。 Swing 有更新更好的 API。例如,如果将文本粘贴到文本字段,您的逻辑将不起作用。使用 JFormattedTextFieldDocumentFilter 在键入文本时检查有效数据。请参阅 How to Write a Document Filter 上的 Swing 教程部分和 How to Use Text Fields获取更多信息。

我不建议在文本字段中放置文本以获得提示。对于不同的方法,请查看 Text Prompt

but it writes "Please enter your name7".

发生这种情况的原因是因为 keyTyped 事件是在用键入的文本更新 Document 之前生成的。要最后执行 setText() 方法,您可以将该语句包装在 SwingUtiltities.invokeLater(...) 中。

出于上述所有原因,我不推荐这种方法。

关于Java KeyListener 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33588825/

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