嗨,我遇到了GWT客户端的问题,即当小部件的父级(沿树的某个地方)使用GWT LayoutPanel或任何布局容器时,小部件无法接收事件。
这是带有简化代码的演示。
此代码有效:
LayoutPanel layoutPanel = new LayoutPanel();
layoutPanel.add(new SimplePanel());
layoutPanel.add(new Button("Button1"));
RootLayoutPanel.get().add(layoutPanel);
该按钮在悬停时突出显示,附加的ClickHandler接收事件。
但是下面的代码却没有。唯一的变化是将add()反转为layoutPanel顺序:
LayoutPanel layoutPanel = new LayoutPanel();
layoutPanel.add(new Button("Button1"));
layoutPanel.add(new SimplePanel());
RootLayoutPanel.get().add(layoutPanel);
按钮已绘制,但未调度任何事件,即使':hover'事件也未通过。检查生成的HTML,表明正在生成“ button”标记。
我正在使用GWT 2.8.2,Google Appengine 1.9.66和Java 8(为版本2和Java8 JRE配置的appengine-web.xml)。
我有一个更复杂的GUI,也遇到了同样的问题,我只是将其归结为上述示例来说明问题。
答案 0 :(得分:3)
由于您没有为添加的小部件指定任何布局选项,因此实际上是将它们彼此叠加,因此在第二种情况下,该按钮位于简单面板的后面,该面板是透明的,因此我不会直观地隐藏按钮。