我有 DataGrid,其中一列包含图像。我使用此代码生成列。
Column<Job, String> expandHideColumn = new Column<Job, String>(
imageCell) {
@Override
public String getValue(Job object) {
return null;
}
@Override
public void render(Context context, Job Object, SafeHtmlBuilder sb) {
sb.appendHtmlConstant("<img src='images/expand.jpeg' style='cursor: pointer' />");
}
}
我想要的是单击它必须更改的图像。为此,我在 ImageCell 上添加了一个单击处理程序,如下所示
ImageCell imageCell = new ImageCell() {
@Override
public Set<String> getConsumedEvents() {
Set<String> events = new HashSet<String>();
events.add("click");
return events;
}
};
在 onBrowserEvent 方法中我写了这个
@Override
public void onBrowserEvent(Context context, Element element,
Job job, NativeEvent event) {
if (element.getFirstChildElement().isOrHasChild(
Element.as(event.getEventTarget()))) {
if (element.getFirstChildElement().getPropertyString("src")
.matches("(.*)expand.jpeg")) {
element.getFirstChildElement().setPropertyString("src",
"images/collapse.jpeg");
} else {
element.getFirstChildElement().setPropertyString("src",
"images/expand.jpeg");
}
}
}
我认为这不是在点击事件上更改图像的好方法。有更好的解决方案吗?