2016-10-07 5 views
1

Есть ли способ показать несколько компонентов (например, CheckBox, Label и т. Д.) В одной ячейке сетки Vaadin? Сетка отображает данные, динамически заполняемые генератором GeneratedPropertyContainer.отображение нескольких компонентов в ячейке сетки ваадина

Заранее спасибо.

ответ

1

Если вы ищете Vaadin directory, вы найдете несколько расширений, таких как ComponentRenderer add-on, которые позволяют вам иметь такие функции несколько безболезненным способом. Ниже вы можете увидеть образец кода на основе Vaadin v7.7.3 и v1.0.2 вышеупомянутого дополнения. Не забудьте обновить и перекомпилировать свой виджетов.

public class GridWithMultiComponentRenderer extends VerticalLayout { 

    private static final String BUTTONS_ID = "buttons"; 

    public GridWithMultiComponentRenderer() { 
     // basic grid setup 
     Grid grid = new Grid(new BeanItemContainer<>(Person.class)); 
     grid.setSizeFull(); 
     addComponent(grid); 

     // add the decorator 
     ComponentGridDecorator<Person> gridDecorator = new ComponentGridDecorator<>(grid, Person.class); 

     // generate the column which will display the components 
     gridDecorator.addComponentColumn(BUTTONS_ID, person -> new HorizontalLayout(
       new Button("Get name", event -> Notification.show(person.getName())), 
       new Button("Get surname", event -> Notification.show(person.getSurname())), 
       new Button("Get age", event -> Notification.show(String.valueOf(person.getAge()))) 
     )); 

     // set column order 
     grid.setColumns("name", "surname", "age", BUTTONS_ID); 

     // add some dummy data 
     Random random = new Random(); 
     for (int i = 0; i < 10; i++) { 
      gridDecorator.add(new Person("Name " + i, "Surname " + i, random.nextInt(99) + 1)); 
     } 
    } 

    // POJO for simple binding 
    public static class Person { 
     private String name; 
     private String surname; 
     private int age; 

     public Person(String name, String surname, int age) { 
      this.name = name; 
      this.surname = surname; 
      this.age = age; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getSurname() { 
      return surname; 
     } 

     public void setSurname(String surname) { 
      this.surname = surname; 
     } 

     public int getAge() { 
      return age; 
     } 

     public void setAge(int age) { 
      this.age = age; 
     } 
    } 
} 

Результат:

multiple components in grid column

+0

Спасибо за помощь. Я мог бы реализовать свое требование с помощью дополнения ComponentRenderer. Он работает отлично. – Debasish

+0

@Debasish не проблема, рад, что я мог бы помочь. Обычно на StackOverflow, общий способ поблагодарить кого-то за ответ или комментарий, является его голосованием, если это было полезно, или выберите его как правильный ответ (щелкните зеленый символ 'v' перед номером голосования), который даст некоторые очки репутации тому, кто ответил. С другой стороны, если в ответе нет содержательной информации по этому вопросу, вы можете выбрать его проголосовать. Эти действия помогут другим пользователям, у которых есть аналогичный вопрос/вопрос, быстро определить соответствующую информацию (http://stackoverflow.com/tour). ура – Morfic

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