2014-12-09 4 views
0

Я ищу способ динамически добавлять столбцы в таблицу vaadin.Динамически добавлять столбцы таблицы?

Я попытался это:

private Button createAddColumnButton() { 
    Button addProductButton = new Button("Add column"); 

    addProductButton.addClickListener(new ClickListener() { 

     public void buttonClick(ClickEvent event) { 
      count = count++; 
      table.addGeneratedColumn("Column "+count, new ColumnGenerator() { 

       @Override 
       public Object generateCell(final Table source, Object itemId, Object columnId) { 
        String x = "some stuff"; 
        return x; 
       } 
      }); 
     } 
    }); 
    return addProductButton; 
} 

Эта кнопка позволяет мне динамически добавлять столбец, однако только один столбец, прежде чем я получил ошибку говоря, я не могу иметь два столбца с одинаковыми идентификаторами. Как изменить идентификатор, чтобы он был уникальным? & добавить много столбцов?

+0

У меня возникло ощущение, что мне нужно создать класс, который реализует генератор столбцов, и в нем установлен его идентификатор случайному int? может быть...? –

+1

«Идентификатор столбца» является первым параметром 'addGeneratedColumn()', поэтому он выглядит как уникальный в вашем примере. Где объявляется счет? Изменилось ли это в другом месте? Можете ли вы показать полную трассировку стека? – geert3

ответ

3

TL; DR

Простое изменение ваш код:

count = count + 1; 

Explenation

Это обусловленно распайка

count = count++; 

не приста k так, как вы ожидаете. Взгляните на следующий код:

public class HelloStackOverflow { 
    public static void main(String[] args) { 
     int count = 0; 
     count = count++; 
     System.out.println(count); 
    } 
} 

Это печатает на стандартный вывод 0. Вы даже можете получить предупреждение (Присваивание переменной счетчика не имеет никакого эффекта), если вы измените свой код:

count = ++count; 

Вы можете найти еще лучшее объяснение here.

+0

стыдно за меня, не замечая этого ;-) – geert3

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