在Java中动态设置JTextField中的文本

在Java中动态设置JTextField中的文本,java,swing,jtextfield,settext,Java,Swing,Jtextfield,Settext,我正在为我的软件创建一个帐户创建工具。在这个工具中,它要求您输入姓名、电子邮件地址等,我使用JTextFields来收集这些信息 我想尝试一些不同的方法,并实时修复无效信息。我对代码进行了设置,这样每当文本字段中的字符发生更改时,就会运行一个方法来删除不需要的字符并执行其他操作。代码有点像这样: private void firstNameUpdate(){ String name = firstNameField.getText(); int pos = firstNameFi

我正在为我的软件创建一个帐户创建工具。在这个工具中,它要求您输入姓名、电子邮件地址等,我使用JTextFields来收集这些信息

我想尝试一些不同的方法,并实时修复无效信息。我对代码进行了设置,这样每当文本字段中的字符发生更改时,就会运行一个方法来删除不需要的字符并执行其他操作。代码有点像这样:

private void firstNameUpdate(){
    String name = firstNameField.getText();
    int pos = firstNameField.getCaretPosition();
    if (!name.equals("")){
        name = name.replaceAll("[^a-zA-Z]", "").toLowerCase();
        if (!name.equals("")){
            name = name.substring(0, 1).toUpperCase() + name.substring(1);
            validFirstName = true;
        } else {
            validFirstName = false;
        }
    } else {
        validFirstName = false;
    }
    firstNameField.setText(name);
    firstNameField.setCaretPosition(pos);
}
代码“firstNameField.setText(name);”是什么导致了错误。我知道该方法中的所有其他内容都有效,因为我尝试将其打印到控制台


我所看到的所有消息来源都说这应该是可行的。我做错了什么?

对于文本组件的实时过滤,应该使用
文档过滤器

看一看,然后


可能的原因是您遇到了一个并发修改错误,您试图在修改基础字段文档时对其进行修改。

您应该使用
DocumentFilter
,但错误是什么?听起来正是我要查找的。非常感谢。