【问题标题】:GWT clickhandler doesn't hide it's own panelGWT clickhandler 不会隐藏它自己的面板
【发布时间】:2013-05-08 09:23:02
【问题描述】:

对于菜单实现,我在FocusPanel 上添加了一个点击处理程序,其中包含一个标签。单击FocusPanel 会打开一个VerticalPanel,以及其他几个标签,每个标签都带有ClickHandlers。单击其中一个标签会更改FocusPanel 中的标签。这部分工作正常。但由于某种原因,我无法在单击标签后隐藏VerticalPanel

关于可能出现什么问题的任何想法?

我添加了一些 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);

【问题讨论】:

    标签: gwt


    【解决方案1】:

    如果VerticalPanelFocusPanel 内,则点击事件将冒泡,FocusPanel 上的ClickHandler 将使VerticalPanel 再次可见。

    【讨论】:

    • 谢谢。将面板移到 FocusPanel 之外解决了这个问题。
    • 或者您可以在VerticalPanel 级别处理点击时使用event.stopPropagation()
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多