我有一个自定义组件,想要为它添加一个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 ->{...});
我已经查看了其他课程,但每个课程都有所不同。
答案 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;
}
}