GWT 使用自定义单元格类型创建列
GWT Create column with custom cell type
我正在尝试在我的项目中使用 中的代码。我定义了以下 class:
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();
}
};
告诉我:
The constructor Column(SeoClickableCell) is undefined
而且我应该让 SeoClickableCell 实现 Cell 或更改 "cell" 的类型。
我不确定我是否正确掌握了自定义程序 cells/columns,如有任何帮助,我们将不胜感激。
我解决了它,将 SeoClickableCell
的类型和实现更改为:
public class SeoClickableCell extends AbstractCell<String> {
public SeoClickableCell() {
super("click", "keydown");
}
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendHtmlConstant("<a href='javascript:;'>");
sb.appendEscaped(value);
sb.appendHtmlConstant("</a>");
}
}
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
if (value == null)
return;
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if ("click".equals(event.getType())) {
//TODO
}
}
};
并像这样制作专栏:
final SeoClickableCell cell = new SeoClickableCell();
Column<WebmasterObject, String> nameColumn = new Column<WebmasterObject, String>(cell) {
@Override
public String getValue(WebmasterObject wbo) {
return wbo.getName();
}
};
我正在尝试在我的项目中使用 中的代码。我定义了以下 class:
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();
}
};
告诉我:
The constructor Column(SeoClickableCell) is undefined
而且我应该让 SeoClickableCell 实现 Cell 或更改 "cell" 的类型。
我不确定我是否正确掌握了自定义程序 cells/columns,如有任何帮助,我们将不胜感激。
我解决了它,将 SeoClickableCell
的类型和实现更改为:
public class SeoClickableCell extends AbstractCell<String> {
public SeoClickableCell() {
super("click", "keydown");
}
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendHtmlConstant("<a href='javascript:;'>");
sb.appendEscaped(value);
sb.appendHtmlConstant("</a>");
}
}
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
if (value == null)
return;
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if ("click".equals(event.getType())) {
//TODO
}
}
};
并像这样制作专栏:
final SeoClickableCell cell = new SeoClickableCell();
Column<WebmasterObject, String> nameColumn = new Column<WebmasterObject, String>(cell) {
@Override
public String getValue(WebmasterObject wbo) {
return wbo.getName();
}
};