阻止gwt DisclosurePanel处于打开状态

Gau*_*ier 1 gwt

如何在开放状态下阻止gwt DisclosurePanel?

我的意思是,如果用户多次点击标题,我该如何阻止此DisclosurePanel关闭?

(我的标题是一个textBox,我希望用户输入一个文本,如果用户取消对textBox的重点并通过点击它重新聚焦,面板应保持打开.DisclosurePanel内容有一个"取消"按钮,关闭面板)

非常感谢你.

我在2个第一个答案之后编辑我的问题:我想避免在关闭后重新打开DisclosurePanel以避免闪烁效果.我实际上想阻止DisclosurePanel关闭.也许sinkEvents可以帮助我...如果是这样,怎么样?谢谢.

pis*_*ies 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();
                }
            });
        }
    }
});
Run Code Online (Sandbox Code Playgroud)