Seguinte, eu sempre usei JTable com DefaultTableModel, agora estou pensando em criar meu proprio TableModel com AbstractTableModel.
O que quero saber eh se para cada Bean eu preciso criar um model ??
As customizacoes do meu TableModel, todos ficaram no model, como: Coluna Editavel, Tipo de Coluna(boolean, string, integer, combobox etc…). Pintar cada linha de uma cor, texto da coluna, coluna para ordenacao, alinhamento de texto de coluna, coluna lateral, alinhamento de texto nas colunas etc…etc…etc…
A princípio sim. Mas se tiver criar models para muitas tabelas, recomendo o ObjectTableModel do projeto Towel.
Algumas ficarão no TableModel, como coluna editável, tipo da coluna. Outras implementações devem ser feitas no TableCellRenderer, como alinhamento do texto, cor das células. Vai depender do recurso que você quer usar.
Uma outra duvida q tenho, eh por exemplo, eu trabalho com NetBeans, entaum eu sempre arrasto meu JTable a partir da paleta de componentes. Entaum no caso do AbstractTableModel, eu faria:
MeuTableModel modelo = new MeuTableModel();
minhaTabela.setModel(modelo);
modelo.customizaTabela(minhaTabela);
Para criar umas customizacoes de TableCellRenderer na mesma classe, em um metodo q a recebe, correto ?
tipo
public void customizaTabela(JTable minhaTabela){
minhaTabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
minhaTabela.setAutoCreateColumnsFromModel(false);
//etc...etc...etc...
}
[quote=fernandopaiva]Uma outra duvida q tenho, eh por exemplo, eu trabalho com NetBeans, entaum eu sempre arrasto meu JTable a partir da paleta de componentes. Entaum no caso do AbstractTableModel, eu faria:
MeuTableModel modelo = new MeuTableModel();
minhaTabela.setModel(modelo);
modelo.customizaTabela(minhaTabela);
Para criar umas customizacoes de TableCellRenderer na mesma classe, em um metodo q a recebe, correto ?
tipo
public void customizaTabela(JTable minhaTabela){
minhaTabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
minhaTabela.setAutoCreateColumnsFromModel(false);
//etc...etc...etc...
}
[/quote]
Você pode criar este método “customizaTabela”, mas não dentro do seu model. O model deve se preocupar com os dados da tabela, não com a forma como a tabela é exibida para o usuário.