Blog

Java – Generowanie i obsługa JTable

Witam.
Generowanie i wypełnianie danymi tabeli SWING w Javie to temat rzeka. Spróbuję dziś opisać sposób, którego sam używam przy założeniu, że informacje źródłowe pochodzą z zapytania sql-owego. Jak zawsze na wstępie kod programu a następnie szczegółowy opis całej metodyki.

ZOBACZ KOD PROGRAMU

DefaultTableModel model = (DefaultTableModel) t_klienci.getModel();
        ResultSet rs = sql.query("SELECT id, Imie, Nazwisko, Telefon, Email, Ulica, Adres, wynajal FROM klienci where usunieto="+0);
        
        for( int i = model.getRowCount() - 1; i >= 0; i-- )
        {
            model.removeRow(i);
        }
            try {
                while(rs.next()){
                    Vector row = new Vector();
                    String[] parts= new String[8];
                    row.add(parts[0]=rs.getString("id"));
                    row.add(parts[1]=rs.getString("Imie"));
                    row.add(parts[2]=rs.getString("Nazwisko"));
                    row.add(parts[3]=rs.getString("Telefon"));
                    row.add(parts[4]=rs.getString("Email"));
                    row.add(parts[5]=rs.getString("Ulica"));
                    row.add(parts[6]=rs.getString("Adres"));
                    row.add(parts[7]=rs.getString("wynajal"));
                    model.addRow(row);
                }
            } catch (SQLException ex) {
                Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
            }

Na wstępie musimy zdefiniować model. Za tym pojęciem stoi pełna charakterystyka tabeli, którą utworzyliśmy w NetBeans-ie. Mam tu na myśli ilość oraz rodzaj kolumn. W ogólnym skrócie pojęcie modelu odnosi się do poniższych ustawień z poziomu ‘Table Content’:

CordaNet - Panel

Następnie przy pomocy dyrektywy ResultSet przesyłamy na serwer zapytanie (We wcześniejszym poście umieściłem szczegółową specyfikację dotyczącą korzystania z biblioteki MySQL oraz Klasy MySQL).
Pętla for. Przed jakimkolwiek wprowadzeniem danych do Tabeli należy ową tabelę wyczyścić. To jest warunek konieczny jeżeli chcemy ustrzec się błędów kompilacji i ewentualnej unii rekordów wprowadanych do aktualnie znajdujących się w tabeli. Co ciekawe jak nie trudno zauważyć czyszczenie odbywa się od końca. Dlaczego? Gdybyśmy najpierw usunęli pierwszy rekord, wówczas na jego miejsce ‘wskoczyłby’ rekord drugi. Pętla przy kolejnym obiegu miała by już index o jeden większy czyli 1. Rekord jeden nie istnieje, ponieważ aktualnie zajmuje miejsce z indexem zero czyli wcześniej usuniętego. Błędy, błędy, błędy. Aby temu zapobiec należy czyścić tabelę od końca.
Pętla while, która znajduje się kilka linii poniżej jest odpowiedzialna za bezpośrednie wprowadzanie (generowanie) kolejnych rekordów naszej tabeli. rs.next –> dopóki jest odpowiedź z serwera (dopóki są dane) row.add –> dodaj do wiersza kolejny zwrócony przez zapytanie element. Po umieszczeniu w wierszu wszystkich elementów pochodzących z odpowiedzi serwera dodajemy wiersz do tabeli poleceniem model.addRow(row);

To według mnie najprostszy sposób na wygenerowanie danych w JTable za pośrednictwem zapytania SQL-owego.
Pozdrawiam.

  • Data Wpisu Grudzień 14, 2014 - 6:47 pm
  • Utworzył Azura
  • Kategoria

Brak komentarzy.

Skomentuj



Wszelki prawa zastrzeżone przez CordaSystems