2012-03-28 79 views
2

我知道,还有一些与此问题有关的其他问题。 但是没有答案有正确的解决方案。 有没有一种方法可以在gwt中显示禁用元素的工具提示?特别是对于按钮。 每个禁用的按钮,不再监听mouseevents。但我想显示禁用按钮的工具提示,为什么他们被禁用。我正在浏览整个网页,但我什么都没发现!GWT中禁用元素(按钮)的工具提示

+0

这个问题经常被问到,但主要问题是工具提示是由浏览器处理的,并不是所有的浏览器都显示禁用元素的工具提示。 – 2012-03-28 11:53:46

回答

2

这很简单。禁用的HTML元素不会吸收鼠标事件。无法在禁用的元素上显示工具提示。

解决方案:

  • 扩展按钮控件并重写setEnabled方法只设置一个样式,以使能时,设置为false 出现禁用按钮。不要调用super.setEnabled。
  • 的setEnabled时设置为false设置一个标志,在你的类,它的按钮是禁用
  • 覆盖onBrowserEvent,当你收到click事件检查禁用标志和函数调用Event.preventDefault()停止点击事件处理。 (实际上有几种方法可以解决这个问题,所以这只是一个例子)
+0

我管理它,但它仍然不完善。该按钮看起来被禁用,但点击样式仍处于启用状态。我不知道我必须删除(或添加)以防止出现这种情况。我认为这是一个(buttonEl.dom.setAttribute(“aria-disabled”,“true”);)但是按钮必须被渲染。我想我也必须覆盖onRender方法!你怎么看? – 2012-03-29 07:39:42

1

我想你可能会需要扩展您要显示工具提示Button类,而对于一些相关的方法提供了一个覆盖方法。一些建议,可以帮助...

  1. 尝试改写监听器方法来看看该方法是否被触发,即使按钮是无效的 - 默认情况下禁用的按钮可能只是捕获所有的监听器事件,而不是传递他们通过听众

  2. 尝试启用按钮,但覆盖绘画方法将其绘制为禁用,以便它具有禁用按钮的外观,但仍然像普通按钮一样运行。您可能需要处理一些其他的听众和事件在这种情况下,如捕捉任何正常的点击和无视他们

看你怎么去的。