Originariamente inviato da rocklife
Tu hai qualche idea di come gestire questa situazione?
Ma la questione non è difficile!!! Basta solo stabilire alcune cose:
- Di che tipo sono i dati?? Tutti String? (quindi getColumnClass() ritorna sempre String.class?)
- Vuoi avere un numero arbitrario ed espandibile di righe e colonne?
Con uno scenario di questo tipo, andrebbe bene un ArrayList<ArrayList<String>> o Vector<Vector<String>> (la differenza è la sincronizzazione ma se l'accesso è confinato al solo EDT, event dispatch thread, basta ArrayList).
Nel tuo table model potresti fare:
codice:
private ArrayList<ArrayList<String>> dati;
.....
public void aggiungiRiga(ArrayList<String> riga) {
while (riga.size() < getColumnCount())
riga.add("");
dati.add(riga);
int n = dati.size() - 1;
fireTableRowsInserted(n, n);
}
E dall'esterno fare:
codice:
ArrayList<String> riga = new ArrayList<String>();
riga.add("qualcosa");
tuoTableModel.aggiungiRiga(riga);
il metodo del table model si preoccupa lui di aggiungere colonne vuote se necessario e poi aggiornare la struttura e notificare la view.