Cannot clear jtextfield using Documentlistener

I have a text field, when the user inserts a certain number of characters, the program should put it in a JTable and clear the text field, but it raises an event for Jtextfield.setText("");

Here is my code:

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(""); 
            }
        }
    });
}
+4
source share
2 answers

To update a text field when using DocumentListener, you need to wrap the code in SwingUtilities.invokeLater () so that the code runs after all updates have been made to the document.

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

You cannot change the text field form inside the DocumentListener. Use DocumentFilterto change text.

- ; , . , insertString , .

.

, . . , , , . .

+4

All Articles