Quote Originariamente inviata da andbin Visualizza il messaggio
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.
Quote Originariamente inviata da andbin Visualizza il messaggio
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"