我被要求在GWT Composite中放置一个“完成”按钮(尽管已经有关闭图标),它应该在点击时关闭窗口。不幸的是,我找不到.close()
方法来实现它。怎么办呢?
我有一个包含Composite组件的UserDialog类,我将其命名为UserComposite。 UserDialog扩展到CustomDialogBox,它扩展到DialogBox类:
public class UserDialog extends CustomDialogBox {
private UserComposite c = new UserComposite();
// more codes here
private FlowPanel getFlowPanel() {
if (p instanceof Panel && c instanceof Composite) {
p.setSize(WIDTH, HEIGHT);
p.add(c);
}
return p;
}
}
然后这是我的UserComposite
public class UserComposite extends Composite {
// codes here
@UiHandler("doneButton")
void onDoneButtonClick(ClickEvent event) {
this.removeFromParent();
}
}
我尝试了removeFromParent(),但UserComposite仅从父节点中删除,导致空的DialogBox。
答案 0 :(得分:4)
@Mr。 Xymon,如果你的意思是PopupPanel的实例或PopupPanel的任何子类的实例,你可以使用以下命令:
popupPanel.hide();
答案 1 :(得分:4)
您需要隐藏对话框,而不是复合。一种方法是将对话框的引用传递给UserComposite构造函数,然后使用该引用在对话框上调用hide()。它可能是这些方面的东西:
public class UserDialog extends CustomDialogBox {
private UserComposite c = new UserComposite(this);
...
}
public class UserComposite extends Composite {
private DialogBox parentDialog;
public UserComposite(DialogBox parentDialog) {
this.parentDialog = parentDialog;
}
@UiHandler("doneButton")
void onDoneButtonClick(ClickEvent event) {
parentDialog.hide();
}
}