gpt4 book ai didi

java - KeyEvent 无法识别已按下 Shift 键

转载 作者:行者123 更新时间:2023-12-02 00:35:11 24 4
gpt4 key购买 nike

我遇到以下问题,我试图限制用户仅输入字母值。任何其他不按字母顺序排列的值(按下的键)都会引发错误。然而,有 3 个异常(exception),其中两个工作正常。
异常(exception) 1:Del 键
异常(exception) 2:后退键
异常(exception) 3:Shift <- 这个无法识别,我不知道为什么

SurnameSearch.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
char ch = e.getKeyChar();
if(Character.isAlphabetic(ch)|| (ch == KeyEvent.VK_BACK_SPACE) || (ch == KeyEvent.VK_DELETE) || (ch == KeyEvent.VK_SHIFT)){/*null*/}
else{
JOptionPane.showMessageDialog(null, "Only letters are allowed!");
SurnameSearch.setText(" ");
}
}
});

感谢提示:)

<小时/>

@MadProgrammer

示例是,要求用户输入他的姓氏、名字、中间名和移动电话号码和家庭电话号码。显然我们不希望字母字段中出现数字值,反之亦然:)

最佳答案

不要将 key 字符与 key 代码进行比较。它们通常是不同的东西。

按键代码是一个虚拟概念,用于允许不同的键盘类型和输入方法。

相反,请使用诸如e.getKeyCode() == KeyEvent.VK_SHIFT之类的内容。

如果您尝试将输入限制为任何类型的文本组件,KeyListener 不是您想要的接口(interface)。您将需要使用DocumentFilter反而。这将允许 y 在输入到字段文档时过滤文本。

出于多种原因,这是一种更好的方法。首先,您无法控制 KeyListeners 的通知顺序,这意味着击键可能在到达您的监听器之前就已提交给文本组件。其次,如果用户将文本粘贴到您的字段中,它将完全绕过 KeyListener

关于java - KeyEvent 无法识别已按下 Shift 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327016/

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