我有一个类 Selector<T> 扩展 ListBox 并实现 HasValue<T>(因此 HasValueChangeHandlers<T>)然后我有:
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
我有一个 Selector 的子类 MessageListBox,它为某些特殊对象的 Selector 添加了一些额外的功能。然后我在我的一个小部件中......
@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ChangeEvent event) {
((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
这可行,但我想更改方法以实际收听 ValueChangeEvent,因为代码中有一些地方我生成了一个(虽然我已经找到了如何创建原始 ChangeEvents,但我宁愿不这样做这里)。所以,然后我将代码更改为...
@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ValueChangeEvent<Column> event) {
((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
但现在 GWT 无法编译:[错误] 字段 'filterColumnSelect' 没有关联的 'addValueChangeHandler' 方法。
嗯...是的,它是从 Selector 继承的,并且所有这些类都是公共的。是什么赋予了?
另外,作为说明,我也查看了 ValueListBox,但是我需要它不支持的某些功能,所以它已经过时了。