0

我想更改 gwt 单元格列的背景颜色属性。问题是这种颜色可以在每次渲染单元格时发生变化(背景颜色取决于单元格的值)。

我已经尝试覆盖 TextColumn 的单元格样式名称方法,如下所示:

@Override
public String getCellStyleNames(final Context context, final Object data) {
if (my_condition) return "a custom style";
else return "default style"; // or null...
}

好吧,您当然知道它只是向属性添加了一个类名,因此由于静态 css 文件定义,我不能使用它“动态”设置颜色。

谢谢你的帮助!

4

2 回答 2

3
如果您使用的是 Grid,则可以使用 CellFormatter。例如 grid.getCellFormatter().setStyleName(row, column, "dynamicStyleName");

对于“颜色”属性的动态更新,我建议扩展 TextCell(并将其传递给“TextColumn”构造函数)。像这样的东西:

public class CustomCell extends TextCell<String> {

  interface Template extends SafeHtmlTemplates {
    @Template("<div style=\"color:{0}\">{1}</div>")
    SafeHtml div(String url, String text);
  }

  private static Template template;

  public CustomCell () {
    if (template == null) {
      template = GWT.create(Template.class);
    }
  }

  @Override
  public void render(Context context, String value, SafeHtmlBuilder sb) {
    String color = "red";
    if (value != null) {
      // The template will sanitize the URI.
      sb.append(template.div(color, value));
    }
  }
}


public class CustomColumn<T> extends TextColumn<T> {

  public CustomColumn() {
    super(new CustomCell());
  }
}
于 2012-08-16T19:42:20.853 回答
-1

由于您没有提供您正在使用的组件的详细信息,因此我将给出一个通用建议,以尝试找出您可能需要使用哪些属性。

我使用 eclipse 并建议使用 GWT Designer 来帮助您处理 POC 内容。它可以帮助我了解我可能想要使用哪些属性:

于 2012-08-16T23:30:16.997 回答