繁体   English   中英

GWT阻止弹出面板打开

[英]GWT prevent popup panel from opening

我有一个附有ScheduledCommandMenuItem 当用户点击菜单上,一个新的PopupPanel看来,具有autoHide功能。 现在,当用户在弹出窗口打开时单击MenuItem时,面板将关闭,但由于PopupPanel的close事件作为菜单项上的click事件触发而立即再次打开。 有人可以告诉我在这种情况下如何防止PopupPanel打开吗?

我的代码是这样的:

@UiField
protected MenuItem menuItem;

....

    menuItem.setScheduledCommand(new ScheduledCommand() {
        @Override
        public void execute() {
            PopupPanel window = new PopupPanel();
            window.init();
            window.addCloseHandler(new CloseHandler<PopupPanel>() {
                @Override
                public void onClose(final CloseEvent<PopupPanel> event) {
                    // TODO Maybe something here?
                }
            });                
            window.show();
        }
    });

为弹出窗口创建一个实例,然后使用PopupPanel#isShowing方法隐藏或显示弹出窗口。

public class MyMenuClass{

    private PopupPanel window;
    ....
    ....
    menuItem.setScheduledCommand(new ScheduledCommand() {
        @Override
        public void execute() {
             if(window==null){
                window = new PopupPanel(true);
                window.add(new Label("Hello close me!!!"));
            }
            if(window.isShowing()){
               window.hide();   
            }else{
                window.show();
            }
        }
}

好的,我通过检查菜单栏上最后一个悬停的元素是否是打开窗口的menuItem来做到这一点。 为此,我必须继承默认的MenuBar类并公开getSelectedItem()方法(默认情况下它受到保护,为什么?)

@UiField
MyMenuBar myMenuBar;

....

menuItem.setScheduledCommand(new ScheduledCommand() {
            @Override
            public void execute() {
                if (!wasHoveredWhenClosed) {
                    window.init();
                    window.addCloseHandler(new CloseHandler<PopupPanel>() {
                        @Override
                        public void onClose(final CloseEvent<PopupPanel> event) {
                            wasHoveredWhenClosed = myMenuBar.getSelectedItem() != menuItem;
                        }
                    });
                    window.show();
                } else {
                    wasHoveredWhenClosed = false;
                }
            }
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM