首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Documentlistener清除jtextfield

无法使用Documentlistener清除jtextfield
EN

Stack Overflow用户
提问于 2013-10-04 19:29:49
回答 2查看 2.2K关注 0票数 4

我有一个textfield,当用户插入一定数量的字符时,程序应该将其放在JTable中并清除textfield,但是它会为Jtextfield.setText("");触发一个事件。

这是我的密码:

代码语言:javascript
复制
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(""); 
            }
        }
    });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-04 19:58:52

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

代码语言:javascript
复制
SwingUtilities.invokeLater(new Runnable()
{
    public void run()
    {
        jTextField2.setText("");
    }
});
票数 6
EN

Stack Overflow用户

发布于 2013-10-04 19:33:26

您不能在DocumentListener中修改textfield的加法。使用DocumentFilter修改文本。

文档侦听器不应该修改文档的内容;当通知监听器更改时,更改已经完成。相反,编写一个覆盖insertString或remove方法的自定义文档,或者两者都重写。

在另一个地方。

您可能希望在文档侦听器中更改文档的文本。但是,您不应该从文档侦听器中修改文本组件的内容。如果您这样做,程序可能会陷入僵局。相反,您可以使用格式化文本字段或提供文档筛选器

  • 来自这里的所有引号
  • 教程如何编写DocumentFilter
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19189288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档