gpt4 book ai didi

抽象父类中的 gwt uibinder

转载 作者:行者123 更新时间:2023-12-05 00:15:15 28 4
gpt4 key购买 nike

我想知道是否有一种方法可以将 gwt uibinder 逻辑构建到抽象父类中,这样我就不必在每个要绑定(bind)的类中重复代码。

例如,我希望能够做这样的事情:

public abstract class BasePanel<Panel extends BasePanel> extends Composite {
interface Binder<BinderPanel extends BasePanel> extends UiBinder<Widget, BinderPanel> { }
private static final Binder binder = GWT.create(Binder<Panel>.class);

public BasePanel() {
initWidget(binder.createAndBindUi(this));
init();
}
}

基本上这将允许任何子类做这样的事情:

public MyPanel extends BasePanel<MyPanel> {
//my code here
}

默认构造函数会处理将 MyPanel 绑定(bind)到 MyPanel.ui.xml 的所有代码。

基本上我想偷懒,只需要构建一次界面和 Binder ,这样它就可以以通用的方式完成。想法?

提前致谢。

最佳答案

抽象 UI 绑定(bind)类的正确方法是定义一个父类(super class),该父类(super class)将包含所有子类小部件共有的逻辑。此类可以具有标记为 @UiField 的字段、事件处理程序以及进入 UI Binder 类的任何其他内容。而子类实际上有 UI binder 实例化逻辑。所以像这样:

public abstract BaseWidget extends Composite {
@UiField TextBox textBoxCommon1;
@UiField TextBox textBoxCommon2;

@UiHandler("textBoxCommon1")
void onTextBoxCommon1Changed( ValueChangeEvent<String> event ) {
//...
}

@UiHandler("textBoxCommon2")
void onTextBoxCommon2Changed( ValueChangeEvent<String> event ) {
//...
}
}

public class SomeWidget extends BaseWidget {
interface SomeWidgetUiBinder extends UiBinder<Widget,SomeWidget> {}

private static SomeWidgetUiBinder uiBinder = GWT.create(SomeWidgetUiBinder.class);

@UiField Button someWidgetButton;

public SomeWidget() {
initWidget(uiBinder.createAndBindUi(this));
}

@UiHandler("someWidgetButton")
void onButtonClicked(ClickEvent e) {
Window.alert(textBoxCommon1.getValue());
}
}

关于抽象父类中的 gwt uibinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420953/

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