Premesso che implementare il tuo modello è sicuramente utile e magari in molti casi praticamente l'unica scelta, se non hai grandi esigenze a mio parere per ora potresti anche "appoggiarti" al DefaultTableModel, ti permette di impostare cose essenziali come il fatto di avere le celle editabili o meno, e può essere costruito anche a partire da una matrice di dati, che però dovresti popolare tu, copiandoci i dati da dove li stai attualmente memorizzando (a meno che non sia già una matrice bidimensionale ovviamente).
Altrimenti puoi anche sfruttare il metodo addRow (Object [] data), con cui sostanzialmente a partire dal tuo oggetto, es. una macchina, inserisci man mano i campi in un vettore che poi passi al modello per aggiungere una riga. Ci sarebbe anche il metodo addColumn, che è comodo ad esempio quando hai una lista che puoi "convertire" al volo in array e passare al metodo.
Qui trovi i metodi e i costruttori di DefaultTableModel, la documentazione è molto importante da leggere (compresi i tutorial del tipo "How to use tables" che hai già linkato se non sbaglio), soprattutto se vuoi partire in quarta, quindi fai uno sforzo con l'inglese
Comunque il tipo di modello è solo l'inizio: per fare tutto quello che scrivi nel primo messaggio hai bisogno di inserire la tabella dentro a uno JScrollPane per renderla "scrollabile", ma poi ci saranno più problemi, ad esempio:
- Di default non è lo scrollpane che si adatta alla dimensione della tabella ma viceversa, quindi le colonne occupano tutte la stessa larghezza e se sono tante vedrai le celle che troncano il testo con "...". Se la tabella ha poche righe poi, lo scrollpane sarà più alto e potresti avere un fastidioso buco in mezzo. Una soluzione è fare l'override in JTable del metodo getPreferredScrollableViewportSize(), dove ritorni le dimensioni "corrette", per fare in modo che sia lo scrollpane ad adattarsi alla tabella.
- Altra cosa è data dal fatto che le colonne della tabella non sono dimensionate in base alla cella più larga, ma appunto occupano tutte la stessa misura e si resizano automaticamente. Se vuoi che le celle si adattino al contenuto tipicamente devi settare l'auto resize su off (vedi la documentazione di JTable, così prendi un po' la mano ) e poi settare manualmente la preferred size delle TableColumn calcolando la dimensione richiesta invocando per ogni colonna il prepareRenderer, ciclando su ogni riga fino a trovare la dimensione maggiore (trovi su internet codici già pronti all'occorrenza).
Questo solo per confermare che le tabelle possono essere parecchio rognose. Nel tutorial che hai linkato ti dice anche come abilitare l'ordinamento automatico, senza dover esplicitamente create un RowSorter (che gestisce anche il filtraggio delle colonne all'interno, quindi implementandone uno avresti la possibilità di filtrare la tabella per righe mostrando solo le auto o le moto o tutte e due, un'altra possibilità è invece avere due modelli separati per auto e moto e usare un JRadioButton o JComboBox per scambiare i modelli della tabella).
Buona lettura!
Ps: Per me non è affatto chiaro perché credi che una Hashtable sia comoda da usare, magari fai un po' chiarezza sul come pensi di creare le auto, io ero rimasto al file da cui leggi le marche, hai un altro file contenente delle auto di esempio o fai tutto al volo (magari con quei frammenti di codice che avevi postato in altre parti per settare le variabili casualmente)?