olá pessoal
não estou conseguindo inserir linhas numa tabela
em tempo de execução
ao sair de um campo (jtextfield) onde o usuario vai informar o numero de linhas q deseja inserir
estou usando o abstracttabelmodel
alguém pode me ajudar
obrigado
Cade seu modelo?
JTable table = null;
// cria tabelmodel da tabela
//private boolean DEBUG ;
class MeuTableModel extends AbstractTableModel {
//private Object[][] data = { { "Mary", new Color(153, 0, 153), "Snowboarding", new Integer(5), new Boolean(false) }, { "Alison", new Color(51, 51, 153), "Rowing", new Integer(3), new Boolean(true) }, { "Kathy", new Color(51, 102, 51), "Knitting", new Integer(2), new Boolean(false) }, { "Sharon", Color.red, "Speed reading", new Integer(20), new Boolean(true) }, { "Philip", Color.pink, "Pool", new Integer(10), new Boolean(false) } };
//private String[] TituloColuna = { "Nome", "Cor", "Esporte", "Idade" , "Data Nascimento" , "Salário" } ;
private String[] TituloColuna = { "Nome" } ;
private Object[][] DadosTabela = { } ;
public int getColumnCount() {
return TituloColuna.length; // pega quantidade de colunas
}
public int getRowCount() {
return DadosTabela.length; // pega quantidade de linhas
}
public Object getValueAt(int linha, int coluna) {
return DadosTabela[linha][coluna]; // pega valor da celula
}
public String getColumnName(int col) {
return TituloColuna[col]; // seta titulo da coluna
}
//public Class getColumnClass(int c) {
// return getValueAt(0, c).getClass();
//}
public void limpaDados() {
// DadosTabela = null ;
}
public void addRow(Object newRow[]) {
//Object newData[][] = new Object[getRowCount() 1][getColumnCount()];
Object newData[][] = new Object[getRowCount() ][getColumnCount()];
for(int i = 0; i < getRowCount(); i++)
//newData[i] = data[i];
newData[i] = DadosTabela[i];
newData[getRowCount()] = newRow;
//data = newData;
DadosTabela = newData;
}
public void adicionaLinhas(int linhas) {
//DefaultTableModel modelo = (DefaultTableModel)getTabela().getModel();
//DefaultTableModel modelo = (DefaultTableModel)monta_tabela().getModel();
//AbstractTableModel modelo = (AbstractTableModel) table.getModel();
//for ( int i = 0 ; i < linhas ; i++ ) {
//((DefaultTableModel) modelo).addRow( new String [] { "123" } );
//((AbstractTableModel) modelo).addRow( new String [] { "123" } );
//}
//fireTableRowsInserted(1,1);
//DadosTabela = (Object) "marcos" ;
//modelo.addRow(new Object[modelo.getColumnCount()]) ;
//.addRow(linhas);
}
//public void setValueAt(Object value, int row, int col) {
// DadosTabela[row][col] = value;
// fireTableCellUpdated(row, col);
//}
/*
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
if (col < 1) {
return false;
} else {
return true;
}
}
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col + " to " + value + " (an instance of " + value.getClass() + ")");
}
data[row][col] = value;
fireTableCellUpdated(row, col);
if (DEBUG) {
System.out.println("New value of data:");
printDebugData();
}
}
private void printDebugData() {
int numRows = getRowCount();
int numCols = getColumnCount();
for (int i = 0; i < numRows; i++) {
System.out.print(" row " + i + ":");
for (int j = 0; j < numCols; j++) {
System.out.print(" " + data[i][j]);
}
System.out.println();
}
System.out.println("--------------------------");
}
*/
}
void monta_tabela() {
table = new JTable(new MeuTableModel()); // cria tabela
table.getTableHeader().setReorderingAllowed(false); // muda as colunas de posicao
table.getTableHeader().setResizingAllowed(true); // aumenta e diminui o tamanho da coluna
table.getTableHeader().setBackground(Color.orange); // cor do fundo do titulo da coluna
table.getTableHeader().setForeground(Color.green); // cor do fonte do titulo da coluna
table.getTableHeader().setFont(new Font("Dialog", Font.BOLD, 12)); // fonte do titulo
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // seleciona apenas 1 linha
table.setGridColor(Color.red); // cor das linhas
table.setSelectionBackground(Color.yellow); // cor da linha selecionada
table.setEnabled(true); // editar dados da tabela - true edita false nao edita
table.setForeground(Color.magenta); // cor da fonte
table.setFont(new Font("Dialog", Font.PLAIN, 12)); // fonte
table.setShowHorizontalLines(true); // true mostra linhas horizontais
table.setShowVerticalLines(true); // true mostra linhas verticais
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // auto tamanho da tabela, para barra de rolagem
table.setAutoCreateRowSorter(true); // ordernar a tabela clicando no nome da coluna
table.getColumnModel().getColumn(0).setPreferredWidth(200); // tamanho da coluna
//table.getColumnModel().getColumn(1).setPreferredWidth(100); // tamanho da coluna
//table.getColumnModel().getColumn(2).setPreferredWidth(200); // tamanho da coluna
//table.getColumnModel().getColumn(3).setPreferredWidth(100); // tamanho da coluna
//table.getColumnModel().getColumn(4).setPreferredWidth(200); // tamanho da coluna
//table.getColumnModel().getColumn(5).setPreferredWidth(100); // tamanho da coluna
// barra de rolagem da tabela
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setVisible(true);
scrollPane.setBounds(10, 200, 550, 100);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
pl.add( scrollPane );
/*
linhasMidia = new Vector();
colunasMidia = new Vector();
colunasMidia.add("Título ");
colunasMidia.add("Tempo");
TableModelMidia = new DefaultTableModel(linhasMidia, colunasMidia);
jTableMidia = new JTable(TableModelMidia);
jTableMidia.setVisible(true); // tabela visivel
jTableMidia.getTableHeader().setReorderingAllowed(false); // trava
jTableMidia.getTableHeader().setResizingAllowed(true); // trava
//jTableMidia.getTableHeader().setBackground(Color.LIGHT_GRAY); // cor
//jTableMidia.setForeground(Color.black); // cor da fonte
jTableMidia.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // seleciona
//jTableMidia.setSelectionBackground(Color.green); // cor linha
jTableMidia.setGridColor(Color.lightGray); // cor das linhas
jTableMidia.setShowHorizontalLines(true); // linhas horizontais
jTableMidia.setShowVerticalLines(true); // linhas verticais
jTableMidia.setEnabled(true); // editar dados da tabela - false
jTableMidia.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // auto
jTableMidia.setAutoCreateRowSorter(true); // ordernar a tabela
//jTableMidia.setFont(new Font("Dialog", Font.PLAIN, 11));
jTableMidia.getColumnModel().getColumn(0).setPreferredWidth(430); // tamanho
jTableMidia.getColumnModel().getColumn(1).setPreferredWidth(100); // tamanho
jTableMidia.getColumnModel().getColumn(0).setCellRenderer(new CellRender_Texto());
jTableMidia.getColumnModel().getColumn(1).setCellRenderer(new CellRender_Numero());
jTableMidia.getColumnModel().getColumn(0).setCellEditor(new CellEditor_Texto(50));
jTableMidia.getColumnModel().getColumn(1).setCellEditor(new CellEditor_Numero(6));
TableModelMidia.setRowCount(0);
jScrollPaneMidia = new JScrollPane(jTableMidia);
jScrollPaneMidia.setVisible(true);
jScrollPaneMidia.setBounds(10, 200, 550, 100);
jScrollPaneMidia.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPaneMidia.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
pl.add(jScrollPaneMidia);
*/
}
Seu TableModel é uma cópia do DefaultTableModel. Ele não aproveita as reais vantagens de se estender uma TableModel.
Leia os links da minha assinatura para fazer um TableModel direitinho.