Erro – Selecao tabela Java
Pessoal, preciso de ajuda pra resolver esse ‘pepino’
Estou recebendo um conhecido ‘velho’ erro que não se encaixou nas diversas soluções de correção já apontadas.
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
Etc, etc etc…
Ocorre quando eu seleciono um item da tabela (Jtable) preenchida, que NÃO seja o primeiro item.
Tabela gerada:
O erro está ocorrendo, como nesse exemplo, quando seleciono o Segundo item e mando preencher os campos relativos na tela.
Se eu selecionar um Terceiro, e outros, também receberei a mensagem. Só muda o final 3 >= 1
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2 >= 1
Na minha tela, eu faço uso de duas tabelas a serem preenchidas:
Um fato estranho, é que, mesmo dando o erro, os dados na tela são preenchidos corretamente mas os ‘return codes’ ficam todos comprometidos e as instruções de result codes, não funcionam mais.
Por que dá o ‘estouro’ no array?
Por que só funciona quando seleciono o primeiro item?
Agradeço vossa analise, obrigados.
Segue a listagem resumida da classe:
private void consulta_patri()
{
String sql=“select * from dados where num_patrim = ? order by num_patrim”;
try {
pst = conexao.prepareStatement(sql);
pst.setString(1, (String) cmbSerial.getSelectedItem());
rs=pst.executeQuery();
if (rs.next()) { }
else {
JOptionPane.showMessageDialog(null, “Num patrimonio não existe”); }
// a linha abaixo, usa a biblioteca rs2xml.jar para preencher a tabela
rs=pst.executeQuery();
TblClientes.setModel(DbUtils.resultSetToTableModel(rs));
TblClientes.getColumnModel().getColumn(0).setPreferredWidth(50);
TblClientes.getColumnModel().getColumn(1).setPreferredWidth(80);
(tem mais campos, tirei pra nao poluir muito esse texto)...............
TblClientes.setRowSelectionAllowed(true);
TblClientes.getTableHeader().setReorderingAllowed(true);
} catch (Exception e) { e.printStackTrace();
JOptionPane.showMessageDialog(null, e); }
}
// inicio do metodo preencher os dados do formulario
public void setar_campos()
{
// ------ rotina check se a linha foi selecionada
DefaultTableModel dtm = (DefaultTableModel)TblClientes.getModel();
if (TblClientes.getSelectedRow() >= 0){
}else{
JOptionPane.showMessageDialog(null, “Favor selecionar uma linha”);
return; }
// ----- rotina preenche os campos da tela
int setar = TblClientes.getSelectedRow();
txtSerie.setText(TblClientes.getModel().getValueAt(setar,1).toString());
txtPatrim.setText(TblClientes.getModel().getValueAt(setar,2).toString());
txtMarca.setText(TblClientes.getModel().getValueAt(setar,3).toString());
txtModelo.setText(TblClientes.getModel().getValueAt(setar,4).toString());
txtSetor.setText(TblClientes.getModel().getValueAt(setar,7).toString());
txtUsuario.setText(TblClientes.getModel().getValueAt(setar,8).toString());
txtSoftware.setText(TblClientes.getModel().getValueAt(setar,12).toString());
txtTipo.setText(TblClientes.getModel().getValueAt(setar,5).toString());
} // ----- FIM DO PUBLIC VOID SETAR CAMPOS ------
// ----- INICIO DO METODO DO BOTAO PROCURA SOFTWARE
private void consulta_software()
{
String sql="select * from softwares where nome_soft = ? order by nome_soft";
try {
pst = conexao.prepareStatement(sql);
pst.setString(1, (String) cmbSoftware.getSelectedItem());
rs=pst.executeQuery();
// a linha abaixo, usa a biblioteca rs2xml.jar para preencher a tabela
TblClientes2.setModel(DbUtils.resultSetToTableModel(rs));
TblClientes2.getColumnModel().getColumn(0).setPreferredWidth(50);
TblClientes2.getColumnModel().getColumn(1).setPreferredWidth(80);
(tem mais campos, tirei pra nao poluir muito esse texto).....
TblClientes2.setRowSelectionAllowed(true);
TblClientes2.getTableHeader().setReorderingAllowed(true);
} catch (Exception e) { e.printStackTrace(); // — CATCH DO TRY DO SQL CONSULTA SOFTWARE
JOptionPane.showMessageDialog(null, e);
}
} // ---- FIM DO PRIVATE VOID CONSULTA SOFTWARE()
// ---------- INICIO DO METODO PREENCHER OS DADOS DO FORMULARIO DE SOFTWARE
public void setar_campos2()
{
// ------ rotina check se a linha foi selecionada
DefaultTableModel dtm2 = (DefaultTableModel)TblClientes2.getModel();
int setar2 = 0;
if (TblClientes2.getSelectedRow() >= 0){
setar2 = TblClientes2.getSelectedRow();
}else{
setar2 = TblClientes2.getSelectedRow();
JOptionPane.showMessageDialog(null, "Favor selecionar uma linha");
return;
}
txtSoftAssoc.setText(TblClientes2.getModel().getValueAt(setar2,1).toString());
txtReleaseSoft.setText(TblClientes2.getModel().getValueAt(setar2,2).toString());
concate = TblClientes2.getModel().getValueAt(setar2,1).toString()
+TblClientes2.getModel().getValueAt(setar2,2).toString()
+TblClientes.getModel().getValueAt(setar2,2).toString();
}