0

I am trying customize a TextField and I don't understand how I can get the words when the user is typing ? Example, if user typing word "abc" I should get this words one by one. I'm reading the Vaadin7 Book but I don't know how to do this ?

how can I do ?

thanks

FernandoPaiva
  • 4,410
  • 13
  • 59
  • 118
  • You can try repurposing this: http://stackoverflow.com/questions/3953208/value-change-listener-to-jtextfield Evaluate whether a space is the last character, then parse the word out if it is a space. – Compass Dec 04 '13 at 19:30

2 Answers2

0

You need a TextChangeListener.

An example for an textmessage / SMS counter

final TextField textfield = new TextField("SMS");
textfield.setValue("");
textfield.setMaxLength(160);

// Counter for input length
final Label counter = new Label();
counter.setValue(textfield.toString().length() + " / " + textfield.getMaxLength());

// Display the current length interactively in the counter
textfield.addValueChangeListener(new TextChangeListener() {
    public void textChange(TextChangeEvent event) {
        int len = event.getText().length();
        counter.setValue(len + " / " + textfield.getMaxLength());
    }
});

// Set how fast the listener is invoked (this is default)
textfield.setTextChangeEventMode(TextChangeEventMode.LAZY);

More information here under 5.8.4 Text Change Events.

nexus
  • 2,937
  • 3
  • 17
  • 22
0

wow, thanks for your attention.

I resolved the problem using StringBuffer, while the user typing on keyboard I get the text and format how I need.

public class CpfField extends TextField implements TextChangeListener{  
    private final StringBuffer CPF = new StringBuffer();    

    public CpfField(){
        super("CPF");
        setImmediate(true);
        setMaxLength(14);
        addTextChangeListener(this);
}

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

}

thanks my friend

FernandoPaiva
  • 4,410
  • 13
  • 59
  • 118