ListBox を拡張し、HasValue<T> (したがって HasValueChangeHandlers<T>) を実装するクラス Selector<T> があります。
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
Selector のサブクラスである MessageListBox があります。これは、特定の特別なオブジェクトの Selector にいくつかの機能を追加します。次に、ウィジェットの1つに...
@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ChangeEvent event) {
((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
そして、これは機能しますが、代わりに ValueChangeEvent を実際にリッスンするようにメソッドを変更したいと思います。これは、コード内に ValueChangeEvent を生成する場所があるためです (生の ChangeEvent を作成する方法を見つけたので、むしろそれを行いたくありません)。ここ)。それで、コードを次のように変更します...
@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ValueChangeEvent<Column> event) {
((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
しかし、GWT は次のエラーでコンパイルに失敗します: [ERROR] フィールド 'filterColumnSelect' には 'addValueChangeHandler' メソッドが関連付けられていません。
ええと...はい、セレクターから継承し、これらのクラスはすべて公開されています。何が与えますか?
あと、メモとしてValueListBoxも見てみたのですが、必要な機能でサポートされていないのでアウトです。