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 ?