【发布时间】:2016-01-26 20:21:03
【问题描述】:
我正在尝试在我的项目中使用来自https://stackoverflow.com/a/6966235/1339354 的代码。我定义了以下类:
public class SeoClickableCell extends AbstractCell<WebmasterObject> {
public SeoClickableCell() {
super("click", "keydown");
}
@Override
public void render(Context context, WebmasterObject value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendHtmlConstant("<a href='javascript:;'>");
sb.appendEscaped(value.getName());
sb.appendHtmlConstant("</a>");
}
}
@Override
public void onBrowserEvent(Context context, Element parent, WebmasterObject value, NativeEvent event, ValueUpdater<WebmasterObject> valueUpdater) {
if (value == null)
return;
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if ("click".equals(event.getType())) {
//TODO
}
}
};
但我正在尝试在我的 CellTable 中创建一个自定义列。但以下代码:
final SeoClickableCell cell = new SeoClickableCell();
Column<WebmasterObject, String> nameColumn = new Column<WebmasterObject, String>(cell) {
@Override
public String getValue(WebmasterObject WebmasterObject) {
return WebmasterObject.getName();
}
};
告诉我:
构造函数 Column(SeoClickableCell) 未定义
我应该让 SeoClickableCell 实现 Cell 或更改“单元格”的类型。
我不确定我是否正确掌握了制作自定义单元格/列的过程,因此我们将不胜感激。
【问题讨论】:
-
你为什么不想
SeoClickableCell implements Cell?AbstractCell的层次结构是什么? -
因为如果我创建
public class SeoClickableCell extends AbstractCell<WebmasterObject> implements Cell<String> {,Java 会告诉我不能多次实现接口 Cell。如果我让他们两个都实现 X没有发现错误,但是我应该让我的原始代码类似于 Column<WebmasterObject, WebmasterObject> nameColumn = new Column<WebmasterObject, WebmasterObject>(cell) {我不确定这是否是我需要的。 -
这很奇怪,因为
AbstractCell实现了Cell...您使用的是哪个版本的 GWT? -
@philfr49 那是因为 OP 现在正在尝试扩展
AbstractCell和 实现Cell这不起作用。要么是要么。 -
@philfr49 我正在使用 GWT 2.6.0。是的,
AbstractCell的标题是public abstract class AbstractCell<C> implements Cell<C>,所以我知道我不应该让我的类实现 Cell,因为它已经实现了。我现在的问题是如何使用该类制作自定义列。