Acompanhando os conselhos dos companheiros do GUJ, percebi que é inevitável implantar nosso próprio TableModel, e impossível pensar grande com DefaultTableModel. Exemplo de um problema que esbarrei: a data do banco de dados sai na minha tabela com o tipo yyyy-mm-dd.
Neste início de aprendizado, estou entendendo os conceitos da TableModel, mas tenho uma dúvida [b]BEM IDIOTA[/b], e gostaria que me ajudassem, pois não achei exemplos específicos sobre isso: sou muito dependente do NetBeans para “desenhar” meus programas. Ao importar uma tabela para meu JFrame, como faço para que esta tabela utilize o modelo de meu TableModel criado?
SE não me engano, no netbeans, você deve clicar sobre o JTable (não sobre o Scrollpane, que tem o JTable). Ir até a opção tablemodel. Provavelmente em algum lugar por ali (não lembro onde) existe a opção de definir a propriedade através de código do usuário.
Aí vc escreve:
new SeuTableModel();
Onde SeuTableModel é o nome do seu modelo.
Não sei dizer ao certo pois sou usuário de Eclipse, mas já usei essa opção no Netbeans uma vez ou outra.
Sinceramente, me arrependo de ter começado a trabalhar com tabelas do “jeito fácil”, com DefaultTableModel. O problema é que exatamente neste momento em que preciso aperfeiçoar meus programas, esbarrei em várias limitações.
Com ajuda de vocês, consegui da seguinte forma:
ClienteTableModel tabela = new ClienteTableModel();
// Após inserir a JTable no JFrame, clica-se com o botão direito do mouse na tabela e selecione PROPRIEDADES, na opção MODELO escolha a combinação CÓDIGO PERSONALIZADO e escreva o nome atribuído ao TableModel, neste caso, "tabela".
jTable1 = new javax.swing.JTable();
jTable1.setModel(tabela);
[quote=kicolobo]O table model é uma das coisas mais lindas do Swing, já o DefaultTableModel uma das mais horríveis.
É muito fácil. Basta que você crie uma classe que extenda javax.swing.table.AbstractTableModel.
Você terá de implementar apenas os seguintes métodos:
getRowCount -> Quantas linhas sua tabela tem
getColumnCount -> Quantas colunas sua tabela tem
getValueAt(int row, int column), com base na linha e na coluna, você fornece o Object que representa aquela célula
Se quiser, pode também melhorar a sua interface dando nomes às colunas. Basta implementar a função getColumnName(int column).
[/quote]
Depois de trabalhar com outras plataformas, em particular Adobe Air, pra mim o Swing não tem nada de bonito, em relação ao funcionamento default de seus componentes :twisted: