TextField получает ввод слов?

Я пытаюсь настроить TextField, и я не понимаю, как я могу получить слова, когда пользователь печатает? Например, если пользователь вводит слово "abc", я должен получить это слово один за другим. Я читаю книгу Vaadin7, но я не знаю, как это сделать?

Как я могу сделать?

благодаря

2 ответа

Вам нужен TextChangeListener.

Пример для счетчика textmessage/SMS

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);

Подробнее см. В разделе 5.8.4 "Изменение текста".


вау, спасибо за внимание.

Я решил проблему с помощью StringBuffer, а пользователь набрал клавиатуру. Я получаю текст и формат, как мне нужно.

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

}

Спасибо, мой друг

licensed under cc by-sa 3.0 with attribution.