出于测试目的,我想使用DialogBox登录我的应用程序.
这是uibinder文件:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
</ui:style>
<g:HTMLPanel>
<g:Label>Username</g:Label>
<g:TextBox ui:field="username"></g:TextBox>
<g:Label>Password</g:Label>
<g:PasswordTextBox ui:field="password"></g:PasswordTextBox>
<g:Button ui:field="login">Login</g:Button>
</g:HTMLPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
这是我的实现:
public class Login extends DialogBox {
private static LoginUiBinder uiBinder = GWT.create(LoginUiBinder.class);
interface LoginUiBinder extends UiBinder<Widget, Login> {}
@UiField
TextBox username;
@UiField
PasswordTextBox password;
@UiField
Button login;
public Login() {
setHTML("Login");
setWidget(uiBinder.createAndBindUi(this));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:这是正确的方法吗?文档似乎没有说明如何做这种事情......
这就是我所做的,而且它在生产中已经有好几个月了.它非常容易理解和重用.
我使用相同的模式创建了一个抽象对话框,该模式具有抽象方法onConfirm和内置确认按钮.我还在UiBinder中包含一个接受窗口小部件的面板,并覆盖setWidget函数以将窗口小部件放入该内部面板.然后,每当我需要一个新的对话框时,我可以写:
final CustomWidget whicheverWidgetINeedRightNow = xyz;
CustomDialog dialog = new CustomDialog()
{
@Override
protected void onConfirm()
{
process(whicheverWidgetINeedRightNow.getData());
}
};
dialog.setWidget(whicheverWidgetINeedRightNow);
Run Code Online (Sandbox Code Playgroud)
模板UiBinder中的ok按钮是硬连接的,可以在按下时调用onConfirm.漂亮!对于更复杂的情况,我将CustomDialog子类化为自己的命名类.
它在我的应用程序中可能有5或6种不同的情况对我很有用,而且我不需要重新设置样式或重新编码任何东西.
| 归档时间: |
|
| 查看次数: |
3897 次 |
| 最近记录: |