java - 无法使用 Documentlistener 清除 jtextfield

标签 java swing jtextfield documentlistener

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

这是我的代码:

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(""); 
            }
        }
    });
}

最佳答案

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

SwingUtilities.invokeLater(new Runnable()
{
    public void run()
    {
        jTextField2.setText("");
    }
});

关于java - 无法使用 Documentlistener 清除 jtextfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189288/

相关文章:

java - 简单的java布局问题

java - 为什么我的 JPanel 比应有的小?

Java Swing 空白屏幕而不是显示的窗口

java - 在 JTextField 和 setText 中撤消

java - 如何在java中保存和加载复选框状态和文本字段值?

java - 如何创建 REST 兼容的 servlet?

java - Mockito - 模拟具体类

java - Java 中的 StringIndexOutOfBounds

java - 创建单选按钮

java - 小键盘的 JTextField 问题