Erro de indice

gente do céu, nao sei onde é o erro disso…ja li tudo quanto é topico, tentei daqui e dali mas vou recorrer a ajuda de vcs

tenho um formulario que faz cadastro e atualização
e tenho tb, uma tabela

cadastro OK
atualização QUASE OK

eu faço uma pesquisa de todos os contatos, aparece na jTable e eu consigo atualizar qualquer cadastro
nas linhas 1 e 2 da tabela atualiza e tudo OK
porém, a partir da linha 3, ele atualiza e depois mostra este erro
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

ou seja, atualizar ele atualiza, mas da este erro ai
e joga o erro la pra um lugar q nao entendo oq pode ser…nesta linha
txtRazaoSocial.setText(fornecedores.get(tabela.getSelectedRow()).getRazao_social());

agradeço!

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

Isso te diz que vc está tentando acessar a posição 1 de um array que tem apenas uma posição. O problema é que a primeira posição é o ZERO.

então, até ai eu sei que ele esta tentando acessar a primeira posição

mas ele retorna o erro nesta linha ai q eu mostrei, ta ficando confuso isso

só a partir da 3 linha da tabela q da isso

private void jTTabelaLinhaSelecionada(JTable tabela) { if (jTTabela.getSelectedRow() != -1) { habilitaDados(); txtRazaoSocial.setText(fornecedores.get(tabela.getSelectedRow()).getRazao_social()); txtNomeFantasia.setText(fornecedores.get(tabela.getSelectedRow()).getNome_fantasia()); txtCnpj.setText(fornecedores.get(tabela.getSelectedRow()).getCnpj()); txtIE.setText(fornecedores.get(tabela.getSelectedRow()).getIe()); txtIM.setText(fornecedores.get(tabela.getSelectedRow()).getIm()); txtLogradouro.setText(fornecedores.get(tabela.getSelectedRow()).getLogradouro()); txtNumero.setText(fornecedores.get(tabela.getSelectedRow()).getNumero()); txtComplemento.setText(fornecedores.get(tabela.getSelectedRow()).getComplemento()); cbEstado.setSelectedItem(fornecedores.get(tabela.getSelectedRow()).getEstado()); txtCEP.setText(fornecedores.get(tabela.getSelectedRow()).getCep()); txtBairro.setText(fornecedores.get(tabela.getSelectedRow()).getBairro()); txtCidade.setText(fornecedores.get(tabela.getSelectedRow()).getCidade()); txtDDDCom.setText(String.valueOf(fornecedores.get(tabela.getSelectedRow()).getDdd_com())); txtTelComercial.setText(fornecedores.get(tabela.getSelectedRow()).getTel_com()); txtDDDRes.setText(String.valueOf(fornecedores.get(tabela.getSelectedRow()).getDdd_res())); txtTelResidencial.setText(fornecedores.get(tabela.getSelectedRow()).getTel_res()); txtDDDCel.setText(String.valueOf(fornecedores.get(tabela.getSelectedRow()).getDdd_cel())); txtCelular.setText(fornecedores.get(tabela.getSelectedRow()).getCelular()); txtPagWeb.setText(fornecedores.get(tabela.getSelectedRow()).getPag_web()); txtEmail.setText(fornecedores.get(tabela.getSelectedRow()).getEmail()); txtObservacoes.setText(fornecedores.get(tabela.getSelectedRow()).getObservacoes()); } else { return; } }

private void mostraPesquisa(List<CadFornecedor> fornecedores) { while (tmFornecedor.getRowCount()>0) { tmFornecedor.removeRow(0); } if (fornecedores.size() == 0) { JOptionPane.showMessageDialog(this, "Nenhum fornecedor cadastrado", "Erro", WIDTH); } else { String[] linha = new String [] {null, null, null}; for (int i = 0; i < fornecedores.size(); i++) { tmFornecedor.addRow(linha); tmFornecedor.setValueAt(fornecedores.get(i).getRazao_social(), i, 0); tmFornecedor.setValueAt(fornecedores.get(i).getNome_fantasia(), i, 1); tmFornecedor.setValueAt(fornecedores.get(i).getCnpj(), i, 2); } } }

Ninguém pode ajudar ai?

Provavelmente seu problema está no modelo da tabela. Não use DefaultTableModel. Veja isso: http://www.guj.com.br/posts/list/15/199067.java#1001295

Hmm, bom saber! Mas agora acontece que todos meus formulários já estão com este tipo de implementação.

Se eu for alterar de todos agora, num vai dar tempo. Prefiro arrumar este erro, que só falta isso, do que trocar tudo e atrasar pra entregar o trabalho. Ai dps com mais tempo eu altero isso com certeza!

Alguma sugestão para o erro?

vejam, se eu coloco este código abaixo, funciona sem dar o erro.

Qual esta sendo a diferença do removeRow(0); para o setRowCount(0); ?

while (tmFornecedor.getRowCount()>0) { tmFornecedor.setRowCount(0); //removeRow(0); }

removeRow(0);    //Remove a linha com indice Zero
setRowCount(0);   //seta a quantidades de linha para Zero

Chutei…