如何将标签添加到标签中,然后将其添加到单元格列中?

时间:2013-04-03 09:12:53

标签: java gwt

我有一个细胞表。我想添加多个标签,并在单元格的一列中分配一些工具提示。到目前为止我尝试了什么 -

TextColumn<C> detailsColumn = new TextColumn<C>() {
  @Override
  public String getValue(C c) {
    List<String[]> cList = c.getChngd();
    if (cList == null || cList.size() == 0) {
      return null;
    }
    Label lbl;
    HorizontalPanel hpanel=new HorizontalPanel();
    for (Iterator<String[]> itr =List.iterator(); itr.hasNext();) {
      String[] detail = itr.next();
      lbl=new Label();
      lbl.setText(detail[0]);
      lbl.addMouseOverHandler(new MouseOverHandler() {
        @Override 
        public void onMouseOver(MouseOverEvent event) {
          Widget source = (Widget)event.getSource();
          source.setTitle("tooltip");
        }
      });
      hpanel.add(lbl);
    }
    return hpanel.getElement().getInnerText();
  }
}; 

它不起作用。任何相同的解决方案?

1 个答案:

答案 0 :(得分:2)

我将工具提示逻辑移到Cell,而不是getCell()的{​​{1}}方法,该方法仅用于检索单元格将要访问的基础数据渲染。

如果您想要一个简单的基于标题的单元格,以下内容应该有效。它创建一个文本单元格,其数据值包含在带有标题的div中。

Column

如果要创建一个列,其中每个单元格可以包含多个此类public class TooltipTextCell extends TextCell { public interface Template extends SafeHtmlTemplates { @Template("<div title=\"{1}\" />{0}</div>") SafeHtml label(SafeHtml text, String title); } private static Template template; public TooltipTextCell() { super(); if (template == null) { template = GWT.create(Template.class); } } @Override public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) { if (value != null) { sb.append(template.label(value, value.asString())); } } } ,则必须使用CompositeCell