我有一个细胞表。我想添加多个标签,并在单元格的一列中分配一些工具提示。到目前为止我尝试了什么 -
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();
}
};
它不起作用。任何相同的解决方案?
答案 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
。