Why a slow textbook?

I am looking for a solution to my problem. I created a class that sets up TextField, and I use TextChangeListener to change the value of the field. Each number that the user enters a shift (format) is taken. It works, but the change is very slow, I want it to be faster.

This is how I do it.

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?

+3
source share
2 answers

Setting TextChangeEventModeto EAGERwill trigger an event after pressing each key. This is often too fast and too much overhead.

The TextChangeEvent function is triggered when there is a pause when editing text. The pause length can be changed using setInputEventTimeout ().

InputEventTimeout.

:

ValueChangeEvent , TextChangeEvent , TextChangeEvent.

+4

: https://vaadin.com/book/-/page/components.textfield.html 5.8.4. . - LAZY. , :

setTextChangeEventMode(TextChangeEventMode.EAGER);
+1

All Articles