ваадин: несколько ссылок в одном поле таблицы
Я хочу спросить об интерфейсе vaadin, который является таблицей. Если я использовал этот компонент, то я должен создать поле с помощью этой команды:
userTable.addContainerProperty("Status", String.class, "Active");
Если я хочу создать ссылку на это поле, то я должен сделать так:
userTable.addContainerProperty("Action", Link.class, new Link("Remove", new ExternalResource("#")));
Мой вопрос заключается в том, что в приведенном выше примере отображается только одна ссылка в одном поле, которое является REMOVE Link. Я хочу создать две ссылки в одном поле этой таблицы. Например, ссылка для редактирования и удаления под полем "действие", как я могу это сделать?
2 ответа:
Используйте сгенерированный столбец для добавления компонентов в каждую строку. Создайте горизонтальный макет и две кнопки в качестве содержимого.
class ValueColumnGenerator implements Table.ColumnGenerator { String format; /* Format string for the Double values. */ /** * Creates double value column formatter with the given * format string. */ public ValueColumnGenerator(String format) { this.format = format; } /** * Generates the cell containing the Double value. * The column is irrelevant in this use case. */ public Component generateCell(Table source, Object itemId, Object columnId) { // Get the object stored in the cell as a property Property prop = source.getItem(itemId).getItemProperty(columnId); if (prop.getType().equals(Double.class)) { HorizontalLayout hbox = new HorizontalLayout() hbox.addComponent(new Button("Status")) hbox.addComponent(new Button("Remove")) return hbox; } return null; } }
См. раздел 5.14.5 книги фреймворк Vaadin для получения дополнительной информации: