
Originariamente inviata da
andbin
Hai detto che hai esteso AbstractTableModel, quindi immagino che hai creato un "tuo" table model personalizzato con una tua struttura dati. Quale? List<TuoTipo> ? TuoTipo[] ? Altro?
Allora per il momento ho semplicemente un array bidimensionale di String che contiene i dati della tabella quindi ho semplicemente un array Strin[][] dati.

Originariamente inviata da
andbin
Se hai esteso AbstractTableModel, come minimo devi aver fornito i metodi che "espongono" i dati. Questo serve per soddisfare la interfaccia TableModel. Ma per modificare il contenuto del table model non c'è uno "standard", né a livello concettuale né a livello di "contratto" di qualche interfaccia.
Se un table model deve poter aggiornare i dati, deve offrire in modo "custom" una serie di metodi aggiuntivi tipo es. add, remove, removeAll o con qualunque altro nome. Sono cioè metodi specifici che ovviamente devono essere conosciuti dal codice "client" che usa la classe specifica del table model.
Faccio prima a riportare il codice relativo alla classe Tabella che estende AbstractTableModel
codice:
public class Tabella extends AbstractTableModel{
private Database db = Database.getDatabase(); //Database è una classe singleton
private ResultSet rs;
private int rowsNumber = 0;
private String attributi[] = {"Cognome","Nome","Telefono 1","Telefono 2","Email"};
private String dati[][];
public Tabella(){
numeroRighe();
dati = new String[rowsNumber][attributi.length];
riempiTabella();
}
private void numeroRighe(){
try{
rs = db.interaRubrica(); //interaRubrica ritorna il risultato di una SELECT * FROM contatti
while(rs.next()){
rowsNumber++; //Siccome SQLite non posso tornare indietro con il puntatore e mi tocca calcolare prima il numero di righe
}
}
catch(SQLException e){
//Messaggio d'errore
}
}
private void riempiTabella(){
try{
rs = db.interaRubirca();
while(rs.next()){
dati[i][0] = rs.getString("Cognome");
dati[i][1] = rs.getString("Nome");
dati[i][2] = rs.getString("Telefono1");
dati[i][3] = rs.getString("Telefono2");
dati[i][4] = rs.getString("Email");
i++;
}
}
catch(SQLException e){
//Messaggio d'errore
}
}
public String getColumnName(int column){
return attributi[column]; //Questo metodo l'ho implementato per sapere il nome degli attributi delle colonne
}
public int getColumnCount(){
return attributi.length;
}
public int getRowCount(){
return dati.length;
}
public Object getValueAt(int row, int col){
return (String) dati[row][col];
}
}
Questo è il codice che ho implementato per costruire la "Tabella Custom"