I metodi di TableModel servono principalmente a JTable. Ma tu hai piena facoltà (e in certi scenari come il tuo è utile) di aggiungere tutti i metodi specifici per operare in maniera più strutturata/consona sugli oggetti nel table model.
Quindi metodi es. setSquadra, addSquadra, removeSquadra, removeAll ......
setSquadra è banale, l'unica particolarità è il fireXXX da scegliere, visto che con un set del genere possono cambiare potenzialmente i dati di tutte le colonne nella riga settata:
Perché getModel() ha tipo di ritorno TableModel, attraverso cui non puoi ovviamente "vedere" i metodi nuovi che hai definito in una implementazione specifica.codice:class SquadreTableModel extends AbstractTableModel { private final ArrayList<Squadra> squadre; public void setSquadra(int row, Squadra squadra) { squadre.set(row, squadra); fireTableRowsUpdated(row, row); // notifica che è cambiata tutta la riga (potenzialmente tutte le colonne)! } ..... }
Se tu sai che l'oggetto è realmente un SquadreTableModel, puoi fare un cast (tanto sai tu che non fallirà a runtime):
((SquadreTableModel) tabella.getModel()).metodoCreato()
Ma così non è molto bello e pulito e ... dovresti oltretutto farlo ogni volta. La cosa più semplice e sensata è quella di tenerti da parte un campo apposito con il riferimento al tuo table model specifico. Tutto qui.


Rispondi quotando