将ValueChangeListener添加到CustomComponent

时间:2017-07-20 17:23:52

标签: java vaadin valuechangelistener

我有一个自定义组件,想要为它添加一个ValueChangeListener。 但我的注册方法有问题。

这是我的自定义组件。

public class CustomComp extends CssLayout implements HasValue<HashMap<String, Boolean>>{

private String value;

@Override
    public void setValue(String value) {
        // TODO Auto-generated method stub
        this.value = value;

    }

    @Override
    public String getValue() {
        // TODO Auto-generated method stub
        return value;
    }

    @Override
    public Registration addValueChangeListener(com.vaadin.data.HasValue.ValueChangeListener<String> listener) {
        // TODO Auto-generated method stub
        System.out.println("Value Changed");
        return null;

    }

    @Override
    public void setRequiredIndicatorVisible(boolean requiredIndicatorVisible) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean isRequiredIndicatorVisible() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void setReadOnly(boolean readOnly) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean isReadOnly() {
        // TODO Auto-generated method stub
        return false;
    }


}

我想创建一个我的组件的对象并添加一个像这样的ValueChangeEvent,但我认为我必须更改addValueChangeListener,但我不确切知道如何。我知道调用该方法是因为执行了sysout“Value changed”。但我想像这样添加听众。

MyCustomComp myCustomComp = new MyCustomComp();
myCustomComp.addValueChangeEvent(event ->{...});

我已经查看了其他课程,但每个课程都有所不同。

1 个答案:

答案 0 :(得分:1)

您可以使用CustomField。它已经从series = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series') series.plot(kind = 'bar') 实现addValueChangeEvent,您只需要提供设置和获取值的方法。只需记住使用HasValue方法设置您的值,否则不会触发火灾值更改事件。

示例:

setValue

和用法:

class CustomComp extends CustomField<String> {

    private String value;

    @Override
    public String getValue() {
        return value;
    }

    @Override
    protected void doSetValue(String value) {
        this.value = value;
    }

    @Override
    protected Component initContent() {
        Button updateCurrentTimeBtn = new Button("Update current time");
        updateCurrentTimeBtn.addClickListener(event -> {
            setValue(String.valueOf(System.currentTimeMillis()));
        });
        return updateCurrentTimeBtn;
    }

}