我有一个类Selector< T>扩展ListBox并实现HasValue< T> (因此HasValueChangeHandlers< T>)然后我有:
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
我有一个Selector子类,MessageListBox,它为某些特殊对象的Selectors添加了一些额外的函数。然后我在我的一个小工具中......
@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,但是我需要它不支持的功能,所以就这样了。