Existem vários construtores para as JTable, o que iremos utilizar é o seguinte:
JTable(TableModel dm)
A int - getColumnCount()  : Retorna o número de colunas do modelo.String - getColumnName(int indexColuna): Retorna o nome da coluna que está no índice passado por parâmetro.int - getRowCount(): Retorna o número de linhas da Tabela.Object getValueAt(int linhaIndex,            int colunaIndex)  : Retorna o objeto presente na célula que está na linha de índice linhaIndex e na coluna colunaIndex.
boolean isCellEditable(int linhaIndex,                int colunaIndex)  : Retorna true se a célula que está na linha linhaIndex colunaIndex. Este método não precisa ser implementado se você não quiser que as células da sua tabela sejam editáveis.void setValueAt(Object valor,            int linhaIndex,            int colunaIndex) :   Este método coluna na célula de linhaIndex e colunaIndex o Object valor.
Nesse link está o código da TableModel que usei para o exemplo.
Nossa classe TesteTableModel irá desmonstrar algumas das opções que temos com nossa Table Model. Clique aqui para vizualizar a classe.
Segue o link para ver a classe Pessoa, que foi utilizada no teste do uso de tabelas. A classe possui apenas getters e setters sem preocupar-se com validações.
Quaisquer dúvidas, críticas ou sugestões podem enviar email para elton.souza@acad.pucrs.br ou deixar comentários.
Até a próxima.