Witam,
mam problem i nie wiem w czym rzecz. Mianowicie chodzi o wyświetlenie danych z bazy. Cała tabele JTable zostaje zapełniona danymi z ostatniego wiersza. W kodzie napisałem żeby wypisywało w konsoli i jak wypisuje w konsoli to wyświetla ładnie te dane. A JTable zapełnia cała tabele danymi z ostatniego wiersza. Proszę o wskazówki i porady.
Funkcja do wyświetlania:
void pokazDane(){
String zapytanie= "SELECT *FROM rysunki";
List<String> lista = new ArrayList<String>();
try {
Statement st = polaczenie.createStatement();
ResultSet pobrane = st.executeQuery(zapytanie);
while(pobrane.next()){
lista.clear();
String id= pobrane.getString("Id");
String nazwa= pobrane.getString("Nazwa_rysunku");
String nrSeg= pobrane.getString("Numer_segregatora");
String nrStr= pobrane.getString("Numer_strony");
lista.add(id);
lista.add(nazwa);
lista.add(nrSeg);
lista.add(nrStr);
System.out.println(lista.toString()); // tutaj wypisuje dane poprawnie
model.addElement(lista); // użycie modelu Tabeli
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Model tabeli:
import java.util.ArrayList;
import java.util.List;
import java.io.Serializable;
import javax.swing.table.AbstractTableModel;
public class ModelTabeli extends AbstractTableModel implements Serializable {
private String[] columnNames = {"ID","Nazwa rysunku","Nr segregatora","Nr strony"};
private ArrayList<List<String>> listy =new ArrayList<List<String>>();
private static final long serialVersionUID = 1L;
public ModelTabeli(ArrayList<List<String>> listy) {
this.listy=listy;
}
public ModelTabeli(){};
public void addElement(List<String> lista){
listy.add(lista);
fireTableDataChanged();
fireTableStructureChanged();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return columnNames.length;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return this.listy.size();
}
@Override
public Object getValueAt(int wiersz, int kolumna) {
return listy.get(wiersz).get(kolumna);
}
public String getColumnName(int column) {
return columnNames[column];
}
}