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

标签 java swing jtextfield settext

我正在为我的软件创建一个帐户创建工具。在此工具中,它会询问您的姓名、电子邮件地址等,我使用 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

看看Implementing a DocumentFilterthese examples .

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

关于java - 在Java中动态设置JTextField中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24836853/

相关文章:

java mysql SSL 连接

java - 每个字符串都作为 SecretKeySpec 的参数?

java - java中如何处理下溢?

java - 当测试按设置运行时,单元测试失败?

Java Swing : Unable to change text of JTextField

java - 隐藏 JInternalFrame 的标题栏? -java

java - 鼠标位置更新不正确

Java 在同一个 JFrame 中绘制多个正方形

java - 制作一个 JButton,在单击鼠标时从 2 个 JTextFields 切换文本

java - 将 JTextField 文本存储到数组中并求和 - Java