2012-06-29 2 views
2

Я хочу добавить столбец в таблице сотовых/datagrid, которая содержит изображение + текст. Я просто занимаюсь некоторыми исследованиями и выяснил, что есть 3 способа сделать это.GWT Как создать составную ячейку, состоящую из двух видов ячеек или как создать пользовательскую ячейку с изображением и текстом

  1. сделать ImageResourceCell и TextCell затем объединить их в составную ячейку. (пока не видел ни одного примера или ссылки, это просто выходит из моего сознания. Возможно, это не сработает)

  2. использование IconCellDecorator. Я проверил документацию. Он сказал, что «декоратор ячейки, который добавляет значок в другую ячейку». Не уверен, может ли он делать то, что я хочу. Тем не менее, я не нашел никакого примера.

  3. сделать обычную ячейку. Существует пример, касающийся раскрашивания имени цвета и стиля цвета на официальном веб-сайте GWT. Я устал таким образом, чтобы комбинировать изображение и строку. Но это не работает. Возможно, что-то не так с моими кодами, так как я не совсем понимаю коды.

Может ли кто-нибудь предоставить мне несколько примеров о достижении этого. Вы могли бы сделать все, что знаете. Просто введите некоторые коды и покажите мне пример.

Большое вам спасибо.

С наилучшими пожеланиями

+1

Посмотрите на образец [Витрина] (http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellList), более конкретно CellList, CellTree/CellBrowser и CellSampler. –

ответ

7

это не совсем то, что вы искали, но я думаю, вы будете иметь возможность изменять свой пример. Здесь я использовал CompositeCell для получения Ячейки, содержащей 2 разных изображения, каждая из которых была отображена в ImageCell.

//first make a list to store the cells, you want to combine 
final ArrayList<HasCell> zellen = new ArrayList<HasCell>(); 

//then define the cells and add them to the list  
HasCell bearbeiten = new HasCell(){ 
    @Override 
    public Cell getCell() { 
     return new ImageCell(); 
    } 

    @Override 
    public FieldUpdater getFieldUpdater() { 
     return null; 
    } 

    @Override 
    public Object getValue(Object object) { 
     String bearbBild = "images/pencil3.png"; 
     return bearbBild; 
    } 
}; 
zellen.add(bearbeiten); 


HasCell ansicht = new HasCell(){ 

    @Override 
    public Cell getCell() { 
     return new ImageCell(); 
    } 

    @Override 
    public FieldUpdater getFieldUpdater() { 
     return null; 
    } 

    @Override 
    public Object getValue(Object object) { 
     String ansichtBild = "images/gnome_edit_find.png"; 
     return ansichtBild; 
    } 
}; 
zellen.add(ansicht); 

//use your CompositeCell in another Widget or Table   
Column<Benutzergruppe, Cell> options = new Column<Benutzergruppe, Cell>(new CompositeCell(zellen)){ 

    @Override 
    public Cell getValue(Benutzergruppe object) { 
     return zellen.get(0).getCell(); 
    } 
}; 

Я добавил колонку в DataGrid, отлично работал для меня.

здоровается, Николь

Смежные вопросы