簡體   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