Why the textchangelistener is slow?

java, vaadin, vaadin7

Solution

Setting the `TextChangeEventMode` to `EAGER` would result to trigger the event after each key is pressed. That seems often a bit too fast and too much overhead.

A TextChangeEvent is triggered when there is a pause in editing the text. The length of the pause can be modified with setInputEventTimeout().

Try to set an appropriate `InputEventTimeout`.

Hint:

If a ValueChangeEvent would occur before the timeout period, a TextChangeEvent is triggered before it, on the condition that the text content has changed since the previous TextChangeEvent.

Problem

I'm looking for a solution for my problem. I created a class that customize a TextField and I'm using TextChangeListener to change the value of field. Every number that user enter the change(format) is taken. Works, but the change is very slow I want it to be faster. Here's how I'm doing. ``` public class CpfField extends TextField implements TextChangeListener{ private final StringBuilder CPF = new StringBuilder(); public CpfField(){ super("CPF"); setImmediate(true); setMaxLength(14); addTextChangeListener(this); } //change(format) values @Override public void textChange(TextChangeEvent event) { if(!event.getText().trim().isEmpty()){ if(event.getText().length() == 3){ CPF.append(event.getText()); CPF.insert(3,"."); }else if(event.getText().length() == 7){ CPF.setLength(0); CPF.append(event.getText()); CPF.insert(7,"."); }else if(event.getText().length() == 11){ CPF.setLength(0); CPF.append(event.getText()); CPF.insert(11,"-"); }else{ CPF.setLength(0); CPF.append(event.getText()); } }else{ CPF.setLength(0); setValue(""); } setValue(CPF.toString()); } ``` } How to change values faster ?

Original source

Related problems