gpt4 book ai didi

java - 将 ValueChangeListener 添加到 CustomComponent

转载 作者:行者123 更新时间:2023-11-30 02:27:38 26 4
gpt4 key购买 nike

我有一个自定义组件,想要向其中添加一个 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 但我不知 Prop 体如何更改。我知道该方法被调用是因为系统输出“值已更改”被执行。但我想像这样添加监听器。

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

我已经看过其他类(class),但每个类(class)都不同。

最佳答案

您可以使用CustomField 。它已经实现了 HasValue 中的 addValueChangeEvent,您只需要提供设置和获取值的方法即可。请记住使用 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;
}

}

和用法:

Label currentTime = new Label();
currentTime.setCaption("Current time:");
addComponent(currentTime);

CustomComp customComp = new CustomComp();
customComp.addValueChangeListener(event -> {
currentTime.setValue(customComp.getValue());
});
addComponent(customComp);

关于java - 将 ValueChangeListener 添加到 CustomComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com