2013-05-08 2 views
1

Для реализации меню я добавил обработчик щелчка на FocusPanel, содержащий метку. При нажатии на FocusPanel открывается VerticalPanel с несколькими другими надписями, каждый из которых имеет ClickHandlers. Нажатие на один из этих меток изменяет метку в FocusPanel. Эта часть работает нормально. Но по какой-то причине я не могу скрыть VerticalPanel после нажатия на ярлык.GWT 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

Если VerticalPanel находится в пределах FocusPanel то событие щелчка будет пузыриться и ClickHandler на FocusPanel установит VerticalPanel видимым.

+0

спасибо. Перемещение панели за пределы FocusPanel решило проблему. –

+0

Или вы можете 'event.stopPropagation()' когда вы обрабатываете щелчок на уровне 'VerticalPanel'. –

Смежные вопросы