Ok ma se vuoi "rimuovere" colonne ti dovrebbe essere chiaro cosa devi nel getColumnCount (che ritornerebbe un numero diverso di colonne a seconda di qual'è il tipo di visualizzazione e quali colonne devono quindi essere mostrate), nel getColumnClass (), nel getColumnName (), nel getValueAt ().
La cosa più difficoltosa è che se vuoi "nascondere" una colonna in mezzo, si sballano gli indici delle altre colonne, quindi getColumnClass () e getColumnName () non possono ritornare semplicemente l'elemento del vettore all'indice columnIndex che ricevono come argomento, perché in alcuni casi dovrebbero sapere che un certo indice va come dire "saltato".
A questo punto converrebbe avere due modelli distinti per Auto e Moto (se vuoi ancora mostrare colonne diverse) e scambiare i modelli sulla tabella quando cambi visualizzazione altrimenti, se sei sicuro di voler mostrare auto e moto assieme, a questo punto puoi mostrare
tutte le colonne nella tabella, e se l'informazione non è disponibile/sensata per un certo tipo di veicolo puoi lasciare la cella corrispondente vuota, o sbarrata con "/" o simili.
KuroKami69 ha scritto:
Automobili automobile = (Automobili) automobili.get(rowIndex);
io qua creo l'oggetto automobile, di tipo automobili, gli faccio un casting (mi pare si chiami così) e gli dico di prendere il metodo che decido poi nello switch sotto
giusto?
No, qui tu non stai creando alcun oggetto, stai solo prendendo l'elemento dalla lista, e fai un cast solo per "vedere" l'oggetto come Automobile, se la lista è parametrizzata in modo più generico (con Veicolo ad esempio).
Quello che ti conviene fare se visualizzi tutto assieme è:
- Prendi dalla lista l'oggetto di tipo Veicolo, senza cast.
- Se l'indice della colonna si riferisce a una colonna "comune" tra i veicoli, non fai alcun cast e restituisci il metodo definito in Veicolo.
- Se l'indice della colonna si riferisce a una colonna che deve essere riempita solo nel caso di un tipo di veicolo, controlli che veicolo hai in mano (con instanceof), fai un cast, e prendi il metodo opportuno che è definito solo nella specifica sottoclasse.
A tal proposito sarebbe conveniente avere le colonne comuni fino a un certo punto della tabella, poi quelle per solo auto, poi quelle per solo moto (o viceversa) per facilitare di molto l'uso degli indici.