gwt CellTree中的自定义单元格

gwt CellTree中的自定义单元格,gwt,Gwt,我有一个CellTree处理简单的文本单元格。 现在我想要,对于每个树节点,一个不同类型的单元,取决于它是否是叶子 这些单元将是: (1) 如果节点是叶(没有子节点):TextCell (2) 如果节点是根节点(它有>=子节点):。 -它必须显示与leafs相同的字符串 -+1可单击图像(这是一个用于重命名节点名称的图标)。 -+1可单击图像(这是用于删除节点的图标) 我试过: (1) 自定义单元格,扩展抽象单元格。这里的要点是,我无法让可点击的图像响应鼠标取消点击。因此无法执行任何操作(编辑名

我有一个CellTree处理简单的文本单元格。 现在我想要,对于每个树节点,一个不同类型的单元,取决于它是否是叶子

这些单元将是:

(1) 如果节点是叶(没有子节点):TextCell

(2) 如果节点是根节点(它有>=子节点):。 -它必须显示与leafs相同的字符串 -+1可单击图像(这是一个用于重命名节点名称的图标)。 -+1可单击图像(这是用于删除节点的图标)

我试过:

(1) 自定义单元格,扩展抽象单元格。这里的要点是,我无法让可点击的图像响应鼠标取消点击。因此无法执行任何操作(编辑名称或删除节点)

(2) 合成池。这里的要点是,尽管我可以在鼠标点击时得到可点击的图像,但我无法得到一个正确选择必须显示哪种单元格的实现(基于它是否有子单元格,显示TetxCell或带有图标的自定义单元格)

有人能解释一下我是如何做到这一点的吗?到目前为止,我的代码是:

公共节点信息getNodeInfo(T值){


}

单元格将不取决于它将显示的值,而是取决于父节点的值


因此,您将需要一个通用单元,该单元支持两种渲染/行为,并根据要求显示的值在它们之间切换:对于可以确定为叶的值,则仅渲染文本,否则还渲染图像/按钮(注意,您也可以呈现相同的HTML–使使用
复合单元格成为可能/更容易–但使用CSS切换图像/按钮的可见性(
class=xxx
在容器元素上呈现).

谢谢Thomas!最后,对于我不想显示的图标,我使用了一个带有display:none属性的div。我没有尝试使用样式……这是迄今为止最好的解决方案。
if (value == null) {
  return new DefaultNodeInfo<CellTreeNode>(treeData.getDataProvider(), new IconCell(!isLeaf(value)),
      selectionModel, null);
}
else if (value instanceof CellTreeNode) {
  CellTreeNode node = (CellTreeNode) value;

  //data provider for this cell
  ListDataProvider<CellTreeNode> nodeDataProvider = new ListDataProvider<CellTreeNode>(node.getChildren());

  IconCell nodeCell = new IconCell(this, node, !isLeaf(node));

  // add a reference to the visual representation of the element
  node.setCell(nodeCell);

  return new DefaultNodeInfo<CellTreeNode>(nodeDataProvider, nodeCell,
      selectionModel, null);
}
// Unhandled type.
String type = value.getClass().getName();
throw new IllegalArgumentException(
    "[CellLargeTreeListBox] Unsupported object type: " + type);
if (value == null) return false;
CellTreeNode node = (CellTreeNode) value;
return value instanceof CellTreeNode && !node.isRoot();