1

セルテーブルがあります。セルテーブルの 1 つの列に、それぞれにいくつかのツールチップが割り当てられた複数のラベルを追加したいと考えています。私がこれまでに試したこと -

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();
  }
}; 

動いていない。同じための解決策はありますか?

4

1 に答える 1

2

ツールチップ ロジックをのメソッドではCellなくに移動します。このメソッドは、セルがレンダリングする基になるデータを取得するためだけに使用されます。getCell()Column

単純なタイトルベースのセルが必要な場合は、次のように動作するはずです。タイトル付きの div でラップされたデータ値を持つテキスト セルを作成します。

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()));
    }
  }
}

各セルにそのような複数の を含めることができる列を作成する場合はTooltipTextCellCompositeCell.

于 2013-04-03T11:19:38.583 に答える