2015-10-27 2 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(); 
     } 
    }; 

Говорит мне:

Конструктор Column (SeoClickableCell) не определено

И что я должен сделать SeoClickableCell реализовать Cell или изменить тип «ячейки ».

Я не уверен, правильно ли я правильно понимаю процедуру создания пользовательских ячеек/столбцов, поэтому любая помощь будет оценена по достоинству.

+0

Почему вы не хотите, чтобы сделать 'SeoClickableCell реализует Cell'? Что такое иерархия «AbstractCell»? –

+0

Потому что если я делаю 'public class SeoClickableCell extends AbstractCell реализует Cell {', Java говорит мне, что я не могу реализовать интерфейс Cell более одного раза. Если я сделаю оба из них реализующими X , ошибки не обнаружены, но тогда я должен сделать свой исходный код примерно так: 'Column nameColumn = new Column (cell) {' and 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(); 
     } 
    }; 
Смежные вопросы