Vaadin: создание массива таблиц

#java #collections #casting #arraylist #vaadin

#java #Коллекции #Кастинг #массив #vaadin

Вопрос:

В Vaadin я создаю массив таблиц.

     ArrayList<TabSheet> Tabs = new ArrayList<TabSheet>();
  

Я выполняю некоторые операции над ними, например, добавляю дополнительные вкладки к каждой из таблиц в массиве.

После этого, когда я пытаюсь добавить его в MainWindow в качестве компонента, я получаю сообщение об ошибке. Вот как я пытаюсь это сделать:

     BaseClassWindow.addComponent((Component) Tabs);
  

Я получаю этот ClassCastError:

 java.util.ArrayList cannot be cast to com.vaadin.ui.Component
  

Как можно решить эту проблему? Есть ли обходной путь?

Комментарии:

1. Вам нужно поместить свои таблицы в контейнер, чтобы они были доступны для отображения. Как вы ожидаете, что они будут показаны?

2. В Vaadin, как только я добавляю их в качестве компонента в экземпляр Window, они отображаются. Проблема в том, что здесь происходит приведение из экземпляра ArrayList в компонент пользовательского интерфейса vaadin.

3. Да, это нормально, что вы получаете ошибку приведения, вы можете отображать только компоненты, а список массивов таковым не является. Если вы хотите отображать только одну таблицу за раз, вызовите BaseClassWindow.addComponent(Tags.get(the_index_you_want)) .

4. Вы правы, я понимаю, что я делал неправильно.

Ответ №1:

Массив не является компонентом, поэтому вы не можете его преобразовать. Содержимое списка, таблиц, однако, есть, поэтому вы можете их добавить.

Например:

 for(TabSheet tabsheet : tabs){
  myWindow.addComponent(tabsheet);
}