Java 覆盖gwt中包含表单的处理程序
在GWT中,我有一个带有几个文本字段的FormPanel。这些字段具有ChangeEvent处理程序,但问题是这些处理程序必须执行特定于实现的操作。它们还必须使用UiBinder的Java 覆盖gwt中包含表单的处理程序,java,gwt,event-handling,Java,Gwt,Event Handling,在GWT中,我有一个带有几个文本字段的FormPanel。这些字段具有ChangeEvent处理程序,但问题是这些处理程序必须执行特定于实现的操作。它们还必须使用UiBinder的@UiHandler 有两个类实现了这个formpanel,将来可能还会有更多。我需要将此表单放在一个位置,因为它将根据应用程序的部署环境而更改 因此,我想要的是覆盖每个实现的处理程序。目前我想到的是,通过构造函数传递实现表单实例的类,然后从textfields的处理程序调用该实现类中声明的方法,但我还想以某种方式强制
@UiHandler
有两个类实现了这个formpanel,将来可能还会有更多。我需要将此表单放在一个位置,因为它将根据应用程序的部署环境而更改
因此,我想要的是覆盖每个实现的处理程序。目前我想到的是,通过构造函数传递实现表单实例的类,然后从textfields的处理程序调用该实现类中声明的方法,但我还想以某种方式强制在实现类中声明此类方法
我现在不知道该怎么做,我可能真的错过了一些东西。最好的方法是什么
简要示例
FormPanelX
TabThatContainsFPX
PopupThatContainsFPX
选项卡和弹出窗口都包含formpanel,但字段上的ActionHandler在每种情况下的执行都必须略有不同。为什么它们必须使用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;
}
}
意思是说使用UiBinder,不一定是UiHandler,我的错。很酷,仍然觉得有点多余,但感谢伟大的例子工作!
FormPanelX form = new FormPanelX();
form.getTextField().addChangeHandler(new ChangeHandler(){
@Override
public void onChange(ChangeEvent event) {
//Implementation specific to TabThatContainsFPX
}
});