estou com problemas para entender a JtableModel, por que faço os models e so consigo erros na hora que alguma classe metodo chama este metodo do meu model…
quem chama ele ?
como eu registro uma coluna como determinada classe ?
package TableModel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.JOptionPane;
public class CVTableModel extends AbstractTableModel
{
private String[] colNames;
private Object[][] data;
public CVTableModel(String[] col, int linhas)
{
// TODO Auto-generated constructor stub
colNames = col;
data = new Object[linhas][col.length];
}
public int getColumnCount() {
// TODO Auto-generated method stub
return colNames.length;
}
public int getRowCount() {
// TODO Auto-generated method stub
return data.length;
}
public Object getValueAt(int linha, int coluna) {
// TODO Auto-generated method stub
return data[linha][coluna];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return true;
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
este e meu TableModel…
e esta e minha tabela
resultadoScrollPane = new JScrollPane();
jTabbedPane.addTab(
"Resultados",
null,
resultadoScrollPane,
null);
resultadoScrollPane.setPreferredSize(new java.awt.Dimension(870, 706));
resultadoScrollPane.getHorizontalScrollBar().setEnabled(true);
resultadoScrollPane.setAutoscrolls(true);
resultadoScrollPane.setFocusTraversalKeysEnabled(false);
{
TableModel resultadosTableModel = new CVTableModel(
new String[] { "Variedade Analisada",
"CV29","CV38","CV37","Resultado","" },96);
resultadosTable = new JTable();
resultadoScrollPane.setViewportView(resultadosTable);
resultadosTable.setModel(resultadosTableModel);
resultadosTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
resultadosTable.setCellSelectionEnabled(true);
TableColumn column = null;
// formata o tamanho da 3º coluna do header desta tabela
column = resultadosTable.getColumnModel().getColumn(0);
column.setPreferredWidth(200);
column = resultadosTable.getColumnModel().getColumn(4);// muda isto depois para o nome da coluna Resultado
column.setPreferredWidth(200);
for(int i =1; i < resultadosTable.getColumnCount()-1;i++)
{
column = resultadosTable.getColumnModel().getColumn(i);
column.setPreferredWidth(150);
}
por que eu não consigo fazer a tabela rodar direito com esse tablemodel e quando coloco o DefaultTableModel ela roda belezinha…
preciso adicionar um botao no final da tabela mas nao consigo nem fazer o TableModel retornar a classe das colunas… entao to longe de conseguir ainda.
