java - JTextField 仅将输入限制为某些字符

标签 java swing validation jtextfield keyevent

我想创建 JTextField,输入字符限制为类似 “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789+&@#/%?=~_-|!:,.;” 所以我试着重写

public class CustomJTextField extends JTextField {  
String goodchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789+&@#/%?=~_-|!:,.;";

//... my class body ...//

@Override
public void processKeyEvent(KeyEvent ev) {
    if(c != '\b' && goodchars.indexOf(c) == -1 ) {
        ev.consume();
        return;
    }
    else 
        super.processKeyEvent(ev);}}

但这不是我想要的,因为用户不能再按 ctrl-c ctrl-v ctrl-x...所以我添加了

&& ev.getKeyCode() != 17 && ev.getKeyCode() !=67 && ev.getKeyCode() != 86 && ev.getKeyCode() !=0 &&

到 if 条件,但现在用户可以粘贴不适当的输入,即“(”或“<”,没有任何问题...... 我能做什么?

最佳答案

也许使用DocumentFilter会更好与 Pattern ,

关于java - JTextField 仅将输入限制为某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658324/

相关文章:

java - 将带有 ActionListener 的 JButton 添加到 JTabbedPane : ActionListener not working

java - 如何以编程方式(!)使用 wsdl 验证 soap 请求/响应?

java - 如何使用 Gradle 启用 Java 12 预览功能?

java - 提取 XML 标签之间的内容

java - 自定义 JLabel 字体太小

java - 根据内容调整框架大小

java - 为下面的字符串创建正则表达式模式

java - JAVA_TOOL_OPTIONS 中的环境变量未得到扩展

python - Django(1.3.1) 电子邮件验证对于有效电子邮件地址(如 "xxx@xxx.education")失败

javascript - 使用 javascript 和 BootstrapDialog 进行表单验证