如何通过点击监听器'Vaadin'填充TextField

时间:2016-10-12 16:13:40

标签: java css css3 vaadin7

我是Vaadin的新手,我正在尝试将文本添加到用户输入到文本字段的文本中。还有一个vaadin对象,如果用户输入一个大名字,我可以用它自动调整文本字段的大小。

例如:John非常适合文本字段,但在文本字段中不会显示Bobwehadababyitsaboy的全名。下面是我到目前为止在按钮点击时填充文本字段的代码。

protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();

final TextField name = new TextField();
name.setCaption("Type your name here:");

final TextField message = new TextField();
message.setCaption(name.getValue());

Button button = new Button("Click Me");
button.addClickListener( e -> {
    layout.addComponent(message);
});

layout.addComponents(name, button);

1 个答案:

答案 0 :(得分:1)

您可以使用TextChangeListener,这样可以检查输入文本的长度并相应调整文本字段的大小。

TextField tf = new TextField();
tf.addTextChangeListener(new TextChangeListener() {

    @Override
    public void textChange(TextChangeEvent event) {
        // 
        int len = event.getText().length();
        if (len > 100) {
            event.getComponent().setWidth("350px");
        }
        else if (len > 50) {
            event.getComponent().setWidth("250px");
        }
        else {
            event.getComponent().setWidth("150px");
        }   
    }
});
tf.setTextChangeEventMode(TextChangeEventMode.EAGER);