[英]GWT DialogBox that returns values back to the “opener”
我想创建一个弹出窗口(实现为DialogBox或其他类似的组件),我应该能够在多个页面或表单中重用。 我希望DialogBox能够将值返回给“开启者”。
我在想一个显示一个表(通过RPC获得)的DialogBox。 DialogBox可以在几个不同的页面中使用。 当用户选择一行时,对象被“传递回页面”(例如,在其上调用方法),因此它可以将其写入表单字段,或者对其执行任何操作。 被调用者对de DialogBox内部的逻辑一无所知,只知道如何处理返回类型。
我打算做的一个很好的例子可能是一个返回java.util.Date的DatePicker。
你做过类似的事吗? 我感谢您的帮助。 谢谢! 大卫
这真的很容易。 您应该首先创建一个接口,该接口将由打开DialogBox
所有页面实现:
public interface DialogBoxOpener {
void dialogBoxValidated (Date selectedDate);
void dialogBoxCancelled ();
}
然后,创建DialogBox
,并将DialogBoxOpener
作为showDialogBox
方法的参数:
public class MyDialogBox extends DialogBox {
private DialogBoxOpener opener = null;
private final Button cancelButton = new Button("Cancel");
private final Button validButton = new Button("Ok");
private final DateBox myDateBox = new DateBox();
public MyDialogBox () {
cancelButton.addClickHandler(new ClickHandler () {
@Override
public void onClick(final ClickEvent event) {
hide();
if (opener!=null)
opener.dialogBoxCancelled();
}
});
validButton.addClickHandler(new ClickHandler () {
@Override
public void onClick(final ClickEvent event) {
hide();
if (opener!=null)
opener.dialogBoxValidated(myDateBox.getValue());
}
});
// TODO : create your DialogBox
}
public void showDialogBox (final DialogBoxOpener opener) {
this.opener = opener;
// Show the DialogBox
center ();
}
}
现在,您可以从您的页面显示您的DialogBox
:
public class MyPage implements DialogBoxOpener {
private MyDialogBox myDialogBox = getMyDialogBox();
private void openDialogBox () {
myDialogBox.showDialogBox(this);
}
public void dialogBoxValidated (Date selectedDate) {
// TODO : Do something with the date
}
public void dialogBoxCancelled () {
// TODO : Do something
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.