0

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

我能怎么做 ?

谢谢

4

2 回答 2

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

于 2013-12-04T19:38:27.363 回答
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());
}

}

朋友,谢谢

于 2013-12-05T15:44:07.927 回答