自定义gxt Cell可能需要Widget

时间:2013-07-09 12:41:35

标签: java gwt grid gxt

我需要一个可以放置Widget的列。 我有这个:

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中包含小部件

P.S。或者不是Widget,只有GWT Button适合我。

2 个答案:

答案 0 :(得分:3)

有关AbstractCell实现的一些示例,请参阅here

回答有关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。如果您需要一个可以响应事件的按钮,您需要定义自定义单元格来处理浏览器事件(例如click事件)。谷歌在自定义单元格的文档方面做得很好,解释了如何做到这一点。

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

答案 1 :(得分:0)

我有一篇关于向小区添加小部件的帖子。看看它是否会帮助你。

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

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

就像Colin在这里所说的那样,要小心并确保你理解你正在做什么,以及小部件从未真正附加到页面中的HTML。

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