2013-05-08 36 views
1

對於菜單實現,我在FocusPanel上添加了包含標籤的clickhandler。點擊FocusPanel將打開一個VerticalPanel,其他幾個標籤都帶有ClickHandlers。點擊其中一個標籤可更改FocusPanel中的標籤。這部分工作正常。但由於某種原因,我不能在點擊標籤後隱藏VerticalPanelGWT clickhandler不隱藏它自己的面板

關於什麼可能是錯誤的任何想法?

我已經添加了一些sysout,它告訴我該面板實際上是隱藏的,頂部位置爲0.但是,它並沒有消失在屏幕上(在FF和Chrome中測試)。

final VerticalPanel popupPanel = new VerticalPanel(); 
    popupPanel.setVisible(false); 
    popupPanel.setStyleName("popupGreen"); 
    for (int i = 0; i < options.length; i++) { 
     final Label option = new Label(); 
     final String text = options[i]; 
     option.setText(text); 
     if (text.equals(chosen)) { 
      option.addStyleName("selected"); 
     } 
     option.addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(ClickEvent event) { 
       textBox.setText(text); 
       popupPanel.setVisible(false); 
       popupPanel.getElement().getStyle().setProperty("display", "none"); 
       System.out.println(popupPanel.isVisible()); 
       System.out.println(popupPanel.getAbsoluteTop()); 
      } 

     }); 
     popupPanel.add(option); 
    } 
    verticalPanel.add(popupPanel); 

回答

1

如果VerticalPanelFocusPanel內,然後單擊事件將在FocusPanel冒泡和ClickHandler將重新設定VerticalPanel可見。

+0

謝謝。將面板移動到FocusPanel外面解決了問題。 – 2013-05-08 13:18:02

+0

或者當你在'VerticalPanel'級別處理點擊時,你可以'event.stopPropagation()'。 – 2013-05-08 15:58:27