java - 在一个 UiBinder 文件中声明 2 个独立组件?

标签 java gwt uibinder

我有一个对话框触发 ValidEvent(GXT 自定义事件):

public class MyDialog extends Dialog implements HasValidHandlers {

  ...
}

因此,如果我将它包含在 UiBinder 文件中,我应该能够执行类似的操作(请参阅@UiHandler):

@UiField
MyDialog myDialog;

@UiHandler("myDialog")
void onValid(ValidEvent event) {
  ..
}

我想将 MyDialog 包含在一个同样用 UiBinder 定义的小部件中:

public class MyWidget extends Composite {

  @UiField
  MyDialog myDialog;

  public MyWidget(Binder binder) {
    initWidget(binder.createAndBindUi(this));
  }

  @UiHandler("myDialog")
  void onValid(ValidEvent event) {
    ..
  }

  interface Binder extends UiBinder<Widget, MyWidget> {}

}

问题:将组件放置在 ui.xml 文件中的什么位置?

在组件中包含对话框会导致图形问题,因为 UiBinder 会尝试在小部件中添加对话框:

<g:HTMLPanel>
  <MyDialog ui:field="myDialog"/>
</g:HTMLPanel>

但是:在uIBinder中,我只能有一个根组件。

问题:如何在单个 UiBinder 文件中声明 2 个不同的组件?我想避免制作 ui.xml 只是为了声明对话框,如果我通过 new 实例化它,@UiHandler 将不起作用。

最佳答案

您已经部分回答了您自己的问题。

在组件中包含对话框会导致图形问题,因为 UiBinder 会尝试在小部件中添加对话框:

因此,您需要为组件单独创建一个 ui-binder,因为您还打算将其用作 uiField 等!

根据我的猜测(根据我的知识),每个 ui-binder 都会创建一个小部件,并且可以根据需要在另一个 ui-binder 或文件中引用它。

关于java - 在一个 UiBinder 文件中声明 2 个独立组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463021/

相关文章:

具有查找支持的 GWT 消息接口(interface)

gwt - 从多个 UiBinders 引用单个 ClientBundle 类是否会花费任何费用?

java - 在 GWT 项目中使用常量接口(interface)

java - 具有多个 ClientEndpoint 和二进制消息的 WebSocket

Java - 为什么实例 block 在构造函数之后调用或在构造函数中按顺序调用?

javascript - 发现 HTML 对象标记方法/属性

java - 如何使用 "external"包中的 GWT UI Binders

java - spring boot 应用程序使用的端口号

Java代理连接到postgres

java - 调整 gwt canvas 可见字段的大小,但不调整其内容?