TextField得到单词输入?

时间:2013-12-04 19:24:39

标签: java frameworks vaadin vaadin7

我正在尝试自定义TextField,我不明白在用户输入时我怎么能得到这些单词?例如,如果用户输入单词“abc”,我应该逐个得到这个单词。我正在阅读Vaadin7书,但我不知道该怎么做?

我该怎么办?

感谢

2 个答案:

答案 0 :(得分:0)

您需要TextChangeListener

短信/短信计数器的示例

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文字更改事件下的更多信息here

答案 1 :(得分:0)

哇,谢谢你的关注。

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

}

感谢我的朋友