Nie mogę się uporać z wstawianiem danych do JTable. Odkryłem, że działa to poprawnie gdy wstawiam dane tak:
(...)
public static String[] kolumnyTab = {"Imie", "Nazwisko", "Nr indeksu", "Wydział", "Semestr", "Stopien", "Sprawa"};
private Object[][] dane = {{Jan, Kowalski, 666, Chemiczny, Semestr V, I stopien, Podanie}, {Jan, Kowalski, 666, Chemiczny, Semestr V, I stopien, Podanie}};
(...)
table = new JTable(dane, kolumnyTab);
JScrollPane scPane = new JScrollPane (table);
(...)
Dlatego postanowiłem, że po zapisaniu wartości do vectora będę je rozdzielał i wpisywał do zmiennej dane:
public static String[] kolumnyTab = {"Imie", "Nazwisko", "Nr indeksu", "Wydział", "Semestr", "Stopien", "Sprawa"};
private Object[][] dane = {{}};
(...)
wiersz.add(new Istopien (imie, nazwisko, nrIndeksu, wydzial, semestr)+", "+sprawa);
for (int i = 0; i<wiersz.capacity(); i++){
st = new StringTokenizer((String)wiersz.elementAt(i), ",");
int j = 0;
while (st.hasMoreElements()){
dane[i][j] = st.nextElement();
j++;
}
}
Pomysł może trochę dziwny, ale tylko to mi przyszło do głowy. Samo rozdzielanie na Stringi działa, bo testowałem to tak:
st = new StringTokenizer((String)wiersz.elementAt(0), ",");
while (st.hasMoreElements()){
System.out.println(st.nextElement());
}
i wszystko działało bez problemu (wypisywane były wszystkie elementy w osobnych liniach).
Gdy kompiluję i uruchamiam, po wpisaniu danych i kliknięcia na przycisk wywołujący wpisanie danych do obiektu dane pojawia się błąd "java.lang.ArrayIndexOutOfBoundsException" w lini:
dane[i][j] = st.nextElement();
czyli wyjście poza zakres tablicy, ale nie wiem czemu. Jakieś pomysły czemu tak się dzieje? Albo jak to można rozwiązać w lepszy sposób?