我有一个对话框触发 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/