我有一个单元格表。我想添加多个标签,并为单元格表的一列中的每个标签分配一些工具提示。到目前为止我已经尝试过 -
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();
}
};
它不工作。有同样的解决方案吗?
最佳答案
我会将工具提示逻辑移至 Cell
中,而不是移至 Column
的 getCell()
方法中,该方法使用仅用于检索单元格将要呈现的基础数据。
如果您想要一个简单的基于标题的单元格,则以下内容应该有效。它创建一个文本单元格,其中的数据值包含在带有标题的 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()));
}
}
}
如果您想创建一个列,其中每个单元格可以包含多个此类 TooltipTextCell
,则必须使用 CompositeCell
.
关于java - 如何将工具提示添加到标签,然后添加到单元格表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783219/