Zawartość ArrayList do Tabeli

0

Mój kod:

tabela.setModel((TableModel) new DefaultTableModelImpl(
            new Object [][] {
                {((Seans)ListaSeansow.get(0)).getTytul(), ((Seans)ListaSeansow.get(0)).getGatunek(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getCzas(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getDzien()},
                {((Seans)ListaSeansow.get(0)).getTytul(), ((Seans)ListaSeansow.get(0)).getGatunek(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getCzas(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getDzien()},
                {((Seans)ListaSeansow.get(0)).getTytul(), ((Seans)ListaSeansow.get(0)).getGatunek(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getCzas(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getDzien()},
                {((Seans)ListaSeansow.get(0)).getTytul(), ((Seans)ListaSeansow.get(0)).getGatunek(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getCzas(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getDzien()},
                {((Seans)ListaSeansow.get(0)).getTytul(), ((Seans)ListaSeansow.get(0)).getGatunek(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getCzas(), ((Seans)ListaSeansow.get(0)).getGodzina(), ((Seans)ListaSeansow.get(0)).getDzien()}
            },
            
        
            new String [] {
                "Tytuł", "Gatunek", "Godzina", "Czas Trwania", "Sala", "Data"
            })); 

Mam tabelę, w której chce umieścić zawartość ArrayList. Ten kod u góry o dziwo działa, jednak wszystko jest na sztywno wrzucone. Chciałbym mieć dodawanie pól do tabeli w pętli, jednak nie wiem jak to przerobić (dokładniej chodzi mi o deklarację tego new Object [] []).

Próbowałem coś w stylu

Object [] [] obiekt = new Object [n] [6];

i potem pętla

for(int i=1; i<n; i++) obiekt[i][0]=...

itd., no ale widocznie w tym modelu coś jest na sztywno ustalone i nie mam pomysłu dalej.

dodanie znaczników <code class="java"> - furious programming

1

Zacznijmy od tego, że można to zamienić na:

// w klasie Seans
public Object[] asArray(){
    return new Object[]{/*....*/}; // tu se to wypełnij
}

Następnie pętlą z listy tworzymy listę obiektów:

ArrayList<Object[]> seansRows = new ArrayList<>(listaSeansow.size);
for(Seans seans : listaSeansow){
   seansRows.add(seans.asArray());
}

I teraz mamy listę tablic. Zatem wystarczy wywołać na niej metodę toArray() i mamy co co chcemy. Tablicę tablic...

0

Musiałem zmienić na taki kod, bo inaczej wyskakiwał błąd, iż nie można zamienić typu Seans na typ Object.

ArrayList<Object[]> seansRows = new ArrayList<>(ListaSeansow.size());
        for (Iterator it = ListaSeansow.iterator(); it.hasNext();) {
            Seans seans = (Seans) it.next();
            seansRows.add(seans.asArray());
        }
        seansRows.toArray();

Jednak nadal nie wiem jak to dodać do modelu tablicy

tabela.setModel((TableModel) new DefaultTableModelImpl(
            new Object[][]  = seansRows; 
            
        
            new String [] {
                "Tytuł", "Gatunek", "Godzina", "Czas Trwania", "Sala", "Data"
            }));

Powyższy sposób nie działa.

Bardzo możliwe, że jakieś głupoty są w tym kodzie powyżej, ale nie miałem styczności z Javą pół roku, a tu trzeba projekt zrobić.

0

zamień to

new Object[][]  = seansRows; 

na

new Object[][]  = seansRows.toArray(); 

Powinno zadziałać.

0

Nadal jest błąd:

array dimension missing

To co przed edycją było jest nieistotne (mój błąd).

Edit: Rozwiązane, trzeba było troszkę pocastować:

(Object [][]) seansRows.toArray(new Object[seansRows.size()][])

1 użytkowników online, w tym zalogowanych: 0, gości: 1