我正在尝试自定义 TextField,但我不明白如何在用户输入时获取单词?例如,如果用户输入单词“abc”,我应该一一得到这个单词。我正在阅读 Vaadin7 书,但我不知道该怎么做?
我能怎么做 ?
谢谢
我正在尝试自定义 TextField,但我不明白如何在用户输入时获取单词?例如,如果用户输入单词“abc”,我应该一一得到这个单词。我正在阅读 Vaadin7 书,但我不知道该怎么做?
我能怎么做 ?
谢谢
你需要一个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 文本更改事件下的更多信息。
哇,谢谢你的关注。
我使用 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());
}
}
朋友,谢谢