0

我需要一个可以在其中放置小部件的列。我有这个:

import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Widget;

public class WidgetGridCell extends AbstractCell<Widget> {

    Widget widget;

    public WidgetGridCell(Widget widget) {
        this.widget = widget;
    }

    @Override
    public void render(Context paramContext,
            Widget param, SafeHtmlBuilder pb) {

    }
}

但我不知道如何在 HTML 中包含小部件

PS 或者不是 Widget,只有 GWT Button 适合我。

4

2 回答 2

3

有关AbstractCell 实现的一些示例,请参见此处。

要回答有关 GWT 按钮的问题:

import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Widget;

public class WidgetGridCell extends AbstractCell<Widget> {

  Widget widget;

  public WidgetGridCell(Widget widget) {
      this.widget = widget;
  }

  @Override
  public void render(Context paramContext,
          Widget param, SafeHtmlBuilder pb) {
    Button aButton = new Button();
    // add text to the button, etc...
    pb.append(SafeHtmlUtils.fromTrustedString(aButton.toString()));
  }
}

尝试在单元格元素中渲染整个小部件在很大程度上是不可行的(也不可取),但听起来好像您真的在尝试从单元格中渲染按钮。

AbstractCell 是 Cell 接口的实现,它允许您定义要在单元格中呈现的 HTML。如果您需要一个可以响应事件的按钮,则需要定义自定义单元格来处理浏览器事件(例如单击事件)。谷歌在他们关于自定义单元的文档中做得很好,解释了如何去做。

请参阅此链接: http: //www.gwtproject.org/doc/latest/DevGuideUiCustomCells.html

于 2013-07-09T15:04:31.030 回答
0

我有一篇关于向单元格添加小部件的帖子。看看它是否对你有帮助。

http://mpickell.com/blog/2013/01/28/widgets-in-gwt-cell-tables/

正如 Colin 所说,除非将小部件的 HTML 再次推送到页面,否则不会使用小部件上的更改。我在这篇文章的评论中有一些关于你可能处理事件的方式的注释。阅读评论以了解如何使用我在帖子中的课程。

而且就像 Colin 在这里所说的那样,要小心并确保您了解自己在做什么,以及小部件实际上是如何附加到页面中的 HTML 上的。

顺便说一句..你提到你想要一个按钮。为什么不使用 GWT ButtonCell

于 2014-01-08T18:40:01.593 回答