【问题标题】:TextField get words typing?TextField 输入文字?
【发布时间】:2013-12-21 10:55:23
【问题描述】:

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

我该怎么办?

谢谢

【问题讨论】:

标签: java frameworks vaadin vaadin7


【解决方案1】:

您需要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);

更多信息here 在 5.8.4 文本更改事件下。

【讨论】:

    【解决方案2】:

    哇,谢谢你的关注。

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

    }

    谢谢我的朋友

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2021-10-18
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多