如何在开放状态下阻止gwt DisclosurePanel?
我的意思是,如果用户多次点击标题,如何阻止此DisclosurePanel关闭?
(我的标题是一个textBox,我希望用户输入一个文本,如果用户取消对textBox的重点并通过点击它重新聚焦,面板应保持打开状态.DisclosurePanel内容有一个“取消”按钮,用于关闭面板)
非常感谢。
我在2个第一个答案之后编辑我的问题:我想避免在关闭后重新打开DisclosurePanel以避免闪烁效果。我实际上想阻止DisclosurePanel关闭。也许sinkEvents可以帮助我...如果是这样,怎么样?感谢。
答案 0 :(得分:6)
NativePreviewHandler在向其处理程序触发之前接收所有事件。通过在第一次打开revealPanel时注册nativePreviewHandler,您可以取消单击事件。您可以稍后决定preventClose.removeHandler();
HandlerRegistration preventClose = null;
....
panel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
@Override
public void onOpen(OpenEvent<DisclosurePanel> event) {
if (preventClose == null){
preventClose = Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getTypeInt()==Event.ONCLICK && event.getNativeEvent().getEventTarget() == panel.getHeader().getElement().cast())
event.cancel();
}
});
}
}
});
答案 1 :(得分:0)
显而易见的答案是在这里查看javadoc:https://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/DisclosurePanel.html
有一个setOpen()方法:改变此DisclosurePanel的可见状态。
从点击事件中将其设置为false以捕获用户操作。
答案 2 :(得分:0)
JavaDoc就在这里:https://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/ui/DisclosurePanel.html jamesDrinkard指出了旧的1.5 javadoc。
您可以使用addCloseHandler(CloseHandler<DisclosurePanel> handler)
方法添加处理程序,以便当用户尝试关闭它时,您可以使用setOpen()
重新打开它。
答案 3 :(得分:0)
也许不是最好的方式,但它对我有用(也许其中一个也会起作用):
dPanel.setOpen(true);
dPanel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
@Override
public void onOpen(OpenEvent<DisclosurePanel> event) {
dPanel.setOpen(true);
}
});
dPanel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
@Override
public void onClose(CloseEvent<DisclosurePanel> event) {
dPanel.setOpen(true);
}
});