当前位置: 首页 > 知识库问答 >
问题:

无法使用Documentlistener清除jtextfield

施景同
2023-03-14

我有一个文本字段,当用户插入一定数量的字符时,程序应该将其放入JTable并清除文本字段,但它会为J触发一个事件textfield.set文本("");

这是我的代码:

jTextField2.getDocument().addDocumentListener(new DocumentListener() {

        @Override
        public void insertUpdate(DocumentEvent e) {
            printIt();
        }

        @Override
        public void removeUpdate(DocumentEvent e) {

        }

        @Override
        public void changedUpdate(DocumentEvent e) {

        }

        private void printIt() {
            //DocumentEvent.EventType type = documentEvent.getType();
            String code=jTextField2.getText().trim();

           // if(type.toString().trim().length()==13)
            if (code.length()==4) {
                   list.add(code);
                   mod.addRow(new Object[]{code});
                   jTextField2.setText(""); 
            }
        }
    });
}

共有2个答案

海灵均
2023-03-14

不能在DocumentListener中修改textfield的doucment。使用文档过滤器修改文本。

文档监听器不应修改文档的内容;当侦听器收到更改通知时,更改已经完成。相反,可以编写一个自定义文档来覆盖insertString或remove方法,或同时覆盖这两种方法。

在另一部分。

您可能希望在文档侦听器中更改文档的文本。但是,决不能从文档侦听器中修改文本组件的内容。如果这样做,程序可能会死锁。相反,您可以使用格式化的文本字段或提供文档过滤器。

  • 这里的所有引用
  • 如何编写文档过滤器教程
胡弘毅
2023-03-14

要在使用DocumentListener时更新文本字段,您需要将代码包装在SwingUtilities.invoke稍后()中,以便在对Document进行所有更新后执行代码。

SwingUtilities.invokeLater(new Runnable()
{
    public void run()
    {
        jTextField2.setText("");
    }
});
 类似资料:
  • 不更新输入字段的组件本身 This.SetState正在清除状态中的currentValue,但输入字段的值没有反映状态中的更新

  • 问题内容: 是否可以使用jQuery 清除控件值?我尝试了以下方法: 但这不起作用。 问题答案: 简易:将元素包裹起来,在表单上调用reset,然后使用删除表单。与该线程中不同的解决方案不同,你最终得到的是同一元素(包括在其上设置的自定义属性)。 经过测试并可以在Opera,Firefox,Safari,Chrome和IE6 +中运行。也适用于其他类型的表单元素,但除外。 JSFiddle 如下面

  • get_user_record()此函数调用在数据库中提取数据的方法。我使用超时是因为我不想从这个方法得到响应,showUpdatedProgressBar()方法不断地检查数据库计数,并相应地给进度条赋值。为此,我使用了setInterval()函数,该函数正在工作,但无法清除间隔。请告诉我哪里出错了。

  • 我正在尝试使用DocumentListener实现制作一个单独的类来检查天气TextFields是否为空,以便可以添加到多个JTextFeilds。我已经创建了DocumentListener实现的类并添加到TextFields。如果有人帮我解决这个问题,我应该很高兴。 提前谢谢。

  • 今天试着升级詹金斯。它不再启动了。 即使我试图删除它的目录,它也会干净地重新创建它,但随后会因以下日志而崩溃。 Jenkins 1.512 on Glassfish3.1.2.2 编辑:1.421版有效。版本1.422失败。这是一致的,即使在删除jenkins目录之后也是如此。

  • 尝试在JTextField被更新时获取其值(插入字符、删除字符、更改字符),然后设置其值。 我遇到了“试图在通知中变异”的例外情况,导致我: 但是,决不能从文档侦听器中修改文本组件的内容。如果这样做,程序可能会死锁。相反,您可以使用格式化的文本字段或提供文档过滤器。从这里开始 我正在使用文档过滤器将JTextField的字符数限制为12,但我不知道如何在不使用文档侦听器的情况下检测JTextFie