2015-10-27 31 views
0

我試圖在我的項目中使用https://stackoverflow.com/a/6966235/1339354中的代碼。我定義了以下類別:GWT用自定義單元格類型創建列

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(); 
     } 
    }; 

告訴我:

構造柱(SeoClickableCell)是未定義

,我應該讓SeoClickableCell實施小區或更改「細胞類型」。

我不確定如果我正確地掌握了製作自定義單元格/列的過程,所以我們將不勝感激。

+0

爲什麼你不希望使'SeoClickableCell實現Cell'? 「AbstractCell」的層次結構是什麼? –

+0

因爲如果我讓'public class SeoClickableCell extends AbstractCell 實現Cell {',Java告訴我我不能多次實現接口Cell。如果我讓他們兩個都實現了X 沒有發現任何錯誤,但是我應該使我的原始代碼像'Column nameColumn = new Column (cell){'和I'米不知道這是我需要的。 – Shadark

+0

這很奇怪,因爲'AbstractCell'實現'Cell' ...你使用的是哪個版本的GWT? –

回答

0

我解決它改變的類型和實現的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(); 
     } 
    }; 
相關問題