为什么他们必须使用 UiBinder 的 @UiHandler 工作?您不必以这种方式附加处理程序。
我猜你有一个看起来像这样的复合材料。
public class FormPanelX extends Composite {
private static FormPanelXUiBinder uiBinder = GWT
.create(FormPanelXUiBinder.class);
interface FormPanelXUiBinder extends UiBinder<Widget, FormPanelX> {
}
public FormPanelX() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiField
FormPanel formPanel;
@UiField
TextBox textField;
private HandlerRegistration handlerRegistration;
public FormPanelX(String firstName) {
initWidget(uiBinder.createAndBindUi(this));
}
public TextBox getTextField() {
return textField;
}
public void setTextField(TextBox textField) {
this.textField = textField;
}
}
最简单的方法可能是为文本字段设置一个 get 方法,以便您可以直接将更改处理程序附加到它。
然后在您的 TabThatContainsFPX 或 PopupThatContainsFPX 中,您可以执行类似的操作。
FormPanelX form = new FormPanelX();
form.getTextField().addChangeHandler(new ChangeHandler(){
@Override
public void onChange(ChangeEvent event) {
//Implementation specific to TabThatContainsFPX
}
});