【问题标题】:Dynamically setting text in JTextField in Java在 Java 中的 JTextField 中动态设置文本
【发布时间】:2014-07-19 04:48:09
【问题描述】:

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

标签: java swing jtextfield settext


【解决方案1】:

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

看看Implementing a DocumentFilterthese examples

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

【讨论】:

  • 听起来正是我想要的。谢谢!
猜你喜欢
  • 2015-10-06
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多