我在CellTree中有一个自定义图像单元格。我想根据行/节点选择状态渲染两个不同的图像,例如,如果选择了行/节点,我想渲染图像A,如果没有选择图像B.图像耦合对于每个节点是不同的。
在单元格的render方法中获取选择状态的最佳方法是什么?
答案 0 :(得分:1)
如果您可以在此处使用背景图片,那么最简单,最有效的解决方案就是基于CSS。
查看/com/google/gwt/user/cellview/client/CellTree.css(在gwt-user.jar中)。在那里你可以看到css类“.cellTreeItem”和“.cellTreeSelectedItem”。后者已经有了一个图像。您可以为自己分配它,为“.cellTreeItem”分配另一个。
有关如何调整CellTable / CellTree / ...样式的一般信息,请参阅例如: https://stackoverflow.com/a/6387210/291741
您可以使用SelectionModel构建您的单元格,如
public MyCell(SelectionModel selectionModel) {
this.selectionModel = selectionModel;
}
public void render(final Cell.Context context, final Node value,
final SafeHtmlBuilder sb) {
if (selectionModel.isSelected(...
}
但是,当选择更改时,您可能需要重新触发单元格渲染。这可能是可能的,但我从来没有这样做过。