Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向celltable中的单元格添加工具提示?_Java_Gwt - Fatal编程技术网

Java 如何向celltable中的单元格添加工具提示?

Java 如何向celltable中的单元格添加工具提示?,java,gwt,Java,Gwt,我正在使用gwt手机台。在这个单元格表中,我有一列包含compositeCell。现在,我想为该组合单元中的所有单元添加工具提示。有什么解决方法吗?您可以验证渲染方法 @Override public void render( com.google.gwt.cell.client.Cell.Context context, String data, SafeHtmlBuilder sb) { super.render(context, data, sb); sb

我正在使用gwt手机台。在这个单元格表中,我有一列包含compositeCell。现在,我想为该组合单元中的所有单元添加工具提示。有什么解决方法吗?

您可以验证渲染方法

@Override
public void render(
    com.google.gwt.cell.client.Cell.Context context,
    String data, SafeHtmlBuilder sb) {

    super.render(context, data, sb);
    sb.appendHtmlConstant(SafeHtmlUtils.
        fromString("<div title=\"" +titleValue + "\"></div>"););

}
@覆盖
公共无效渲染(
com.google.gwt.cell.client.cell.Context上下文,
字符串数据,安全HTMLBuilder sb){
超级渲染(上下文、数据、sb);
某人附加(安全)证据。
fromString(“”;);
}

如果您想为纯GWT表(com.google.GWT.user.cellview.client.CellTable)添加工具提示,我们可以建议以下几行

Column<String[], SafeHtml> objectNameColumn = new Column<String[], SafeHtml>(new SafeHtmlCell()) {
    @Override
    public SafeHtml getValue(String[] object) {
        String val = (object[index]==null?"":object[index]); 
        return new SafeHtmlBuilder().appendHtmlConstant("<span title='" + 
            new SafeHtmlBuilder().appendEscaped(val).toSafeHtml().asString() + "'>" + val + "</span>").toSafeHtml();
    }
}; 
cellTable.addColumn(objectNameColumn, colLabel);
Column objectNameColumn=new Column(new SafeHtmlCell()){
@凌驾
公共安全HTML getValue(字符串[]对象){
字符串val=(对象[索引]==null?”:对象[索引];
返回新的SafeHtmlBuilder().appendHtmlConstant(“+val+”).toSafeHtml();
}
}; 
addColumn(objectNameColumn,colLabel);

这里有一个抽象的工具提示列类,您可以扩展它来代替普通的列类:

公共抽象类MyToolTipColumn扩展了列{
接口模板扩展了安全HtmlTemplates{
@模板(“”)
SafeHtml startToolTip(字符串toolTipText);
@模板(“”)
安全HTML endToolTip();
}
私有静态最终模板Templates=GWT.create(Templates.class);
私有最终字符串toolTipText;
公共MyToolTipColumn(最终单元格、最终字符串toolTipText){
超级电池;
this.toolTipText=toolTipText;
}
@凌驾
公共void呈现(最终上下文上下文、最终T对象、最终安全HtmlBuilder sb){
sb.append(TEMPLATES.startToolTip(toolTipText));
超级渲染(上下文、对象、sb);
sb.append(TEMPLATES.endToolTip());
}
}
我使用此解决方案:

cellTable.addCellPreviewHandler(new Handler<Object>() {
  @Override
  public void onCellPreview(CellPreviewEvent<Object> event) {
    if ("mouseover".equals(event.getNativeEvent().getType())) {
      cellTable.getRowElement(event.getIndex()).getCells().getItem(event.getColumn()).setTitle('cell contents go here.');
    }
  }
}
cellTable.addCellPreviewHandler(新处理程序(){
@凌驾
公共void onCellPreview(CellPreviewEvent事件){
if(“mouseover”.equals(event.getNativeEvent().getType())){
cellTable.getRowElement(event.getIndex()).getCells().getItem(event.getColumn()).setTitle('单元格内容放在此处');
}
}
}

不幸的是,这不安全,请参阅,规则2不幸的是,这不安全,请参阅,规则2@ChrisLercher没关系。如果我给某人添加(新的safehtml…?)有什么副作用吗?只是好奇:)问题是,SafeHtmlBuilder不能在属性上下文中使用(即引号之间)。这只能用SafeThmlTemplates来完成。@ChrisLercher+1。谢谢Chris的KT。@ChrisLercher虽然你在技术上是正确的,但它不能用于所有属性,即使
SafeThmlTemplates
对大多数属性使用标准的
SafeThmlTools.htmlEscape
。例外情况是URI和样式,因此我们有
SafeUri
SafeStyles
进行补偿。有关此逻辑的完整详细信息,请参见
com.google.gwt.safehtml.rebind.safehtmlTemplateSimpleMethodCreator.emitAttributeContextParameterExpression(TreeLogger,HtmlContext,String,JType)
。当您提到工具提示时,你指的是dom的title属性,还是一个漂亮的、有光泽的、可以设置样式的文本框?我指的是一个可以设置样式的文本框。这个解决方案可以很好地处理列中的单元格。但正如我在问题摘要中提到的,我想向复合单元格中的单元格添加工具提示。意味着假设我有一个复合单元格,其中有两个文本列。然后我想为这些文本列添加工具提示。在这种情况下,此解决方案不起作用。取决于:如果要为复合单元格中的每一列添加不同的工具提示,您还没有说过?或者对整个组合单元使用相同的工具提示?另外:您希望每行有一个不同的吗?请澄清你的问题。好的。是的,我想为复合单元格中的每一列添加不同的工具提示嘿,我想为单元格添加GXT工具提示。有什么线索吗?