gpt4 book ai didi

java - 覆盖 gwt 中包含的表单的处理程序

转载 作者:行者123 更新时间:2023-12-01 04:57:35 24 4
gpt4 key购买 nike

在 GWT 中,我有一个带有多个文本字段的 FormPanel。这些字段具有 ChangeEvent 处理程序,但问题是这些处理程序必须执行特定于实现的操作。它们还必须使用 UiBinder 的 @UiHandler 来工作。

有两个类实现了这个表单面板,将来可能还会有更多的类。我需要将此表单放在一个位置,因为它会根据应用程序的部署环境而变化。

所以我想要的是重写每个实现的处理程序。目前我的想法是通过构造函数传递实现表单实例的类,然后从文本字段的处理程序调用该实现类中声明的方法,但随后我还想以某种方式强制声明这样一个实现类中的方法。

我目前不知道该怎么做,我可能真的错过了一些东西。最好的方法是什么?

简短示例

FormPanelX

TabThatContainsFPX
PopupThatContainsFPX

选项卡和弹出窗口都包含表单面板,但字段上的操作处理程序在每种情况下的执行必须略有不同。

最佳答案

为什么它们必须使用 UiBinder 的 @UiHandler 来工作?您不必以这种方式附加处理程序。

我猜你有一个看起来像这样的复合 Material 。

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

}
});

关于java - 覆盖 gwt 中包含的表单的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com