0

有没有办法使com.google.gwt.user.client.ui.HTML小部件启用或不启用?我试过但似乎没有 setEnabled(boolean) 方法:S 请分享您的经验

谢谢

4

5 回答 5

0

在不继承自 FocusWidget的小部件中显示启用和禁用功能。

您需要同时覆盖样式和事件处理实现。在enableFl你的MyHTMLPanel extends HTMLPanel.

第 1 步- 提供启用和禁用样式。使用 opacity css 打开/关闭灰色的着色。根据 enableFl 的状态打开/关闭启用/禁用功能。

第 2 步onBrowserEvent- 通过覆盖并使其执行取决于您自己的 enableFl 状态来禁用/启用小部件上的事件处理。

第 3 步- 递归禁用 HTMLPanel 内部的所有小部件。

如果您的用例很简单,您可能会选择使用com.google.gwt.user.client.ui.HTML而不是com.google.gwt.user.client.ui.HTMLPanel

于 2013-01-30T05:58:04.737 回答
0

不幸的是,Widget 中没有这样的方法。

但是还有一点空间可以实现。我在谷歌群组的帮助下使它工作

public void setEnabled (boolean e)
 {
  Iterator<Widget> itr = grd.iterator (); // grd is a FlexTable which
contains my form controls

  while (itr.hasNext ())
  {
   Widget w = itr.next ();

   if (w instanceof TextBox)
   {
    TextBox t = (TextBox) w;
    t.setEnabled (e);
   }

   if (w instanceof PasswordTextBox)
   {
    PasswordTextBox t = (PasswordTextBox) w;
    t.setEnabled (e);
   }

  ...
  } 
于 2013-01-30T06:57:59.297 回答
0

只有少数 HTML 元素可以启用或禁用,例如输入。GWT 为可以获得焦点的元素设置了 setEnabled():

http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/ui/FocusWidget.html#setEnabled(boolean)

于 2013-01-29T19:26:48.417 回答
0

我不确定您所说的启用是什么意思,但我会尝试一下。

我假设您的意思是可见或不可见。

HTMLPanel panel = new HTMLPanel();
panel.setVisible(false); // Disabled
panel.setVisible(true);  // Enabled

希望这就是你要找的。

于 2013-01-29T19:22:03.570 回答
0

只能禁用某些表单元素(输入、选项)。

要禁用:

widget.getElement().setAttribute("disabled","disabled");

再次启用:

widget.getElement().removeAttribute("disabled");

对于其他小部件,您需要将它们的样式设置为模仿“禁用”。(例如将颜色设置为灰色)

于 2013-01-29T20:42:08.360 回答