RequestBuilder回调后GWT按钮无响应

时间:2013-04-27 16:49:45

标签: gwt

GWT 2.5.1;将Eclipse 4.2与GPE一起使用;
用UiBinder指定的UI

该应用程序会弹出一个包含“开始”按钮的启动画面。该按钮的单击处理程序执行各种初始化,包括隐藏自身并显示其他三个按钮,图像和文本;它还通过RequestBuilder启动服务器请求(XMLHttpRequest)。 RequestBuilder回调使用返回的服务器数据在canvas元素中绘制条形图。

点击“开始”按钮后,浏览器窗口按预期显示上面提到的所有视觉元素。但这三个按钮无法响应点击。他们的处理程序不仅没有被调用,而且当点击鼠标时,它们不会显示激活的轻微视觉指示。浏览器没有被冻结;例如,如果调整窗口大小,则调用app的resize处理程序。

基于日志记录:在“Go”按钮处理程序返回后执行RequestBuilder回调;然后“没有任何反应”,即没有更多的日志输出(除非我调整窗口大小)。

FWIW这是我的第一次GWT努力。

3 个答案:

答案 0 :(得分:0)

通过实验,我找到了部分答案。三个非响应按钮在ui.xml文件中声明,{style.hidden}指的是我的.css中的visibility:hidden属性。在java代码中,我取消隐藏这些按钮:

protected void showElement(Element e) {
  e.removeClassName(style.hidden());
  }

显然,将生命视为隐藏,然后以这种方式显示不足以激活按钮。我即将开始研究为什么会这样,但只要我没有发表评论表明我不那么无知,我仍然欢迎回答这个“较小”的问题。

答案 1 :(得分:0)

(评论太长了)

我刚刚发现问题与我在同一位置有按钮这一事实有关,其中只有某些按钮应该在给定时间可见。换句话说,用户将在页面上的相同位置看到以下其中一个:

ButtonA ButtonB ButtonC

ButtonD ButtonE ButtonF

BigButtonG (as wide either of the preceding groups)

问题在于,无论可见性如何,最后声明的上述三个显示中的任何一个(实际上)都具有更高的z-index,并且是唯一一个将对鼠标做出响应的。所以我只是想在显示/隐藏按钮组的代码中实现显式设置div z-indexes的解决方案。

答案 2 :(得分:0)

您可以在UiBinder文件而不是Java代码中设置按钮的位置吗?将它们放在Horizo​​ntalPanel中,它们将自动间隔开。

而不是在元素级别进行交互以隐藏按钮,而是使用setVisible(true)调用您的按钮实例;例如,buttonA.setVisible(true)