Boa noite pessoal,
Na primeira vez que rodo meu sistema eu consigo pegar um evento de mouse (Clicando 2x) na minha tabela. Mas basta eu pesquisar e redefinir minha tabela que (Clicando 2x )ele me retorna :
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: -1
segue parte do sistema :
public void PainelApresentacao() {
//aqui instancia o painel de dados do cliente
jpApresenta = new JPanel();
jpApresenta.setBorder(BorderFactory.createTitledBorder("Dados de Clientes"));
jpApresenta.setSize(675, 230);
jpApresenta.setLocation(5, 340);
this.jpApresenta.setLayout(new GridLayout(1, 1, 0, 0));
this.add(jpApresenta);
String[] col = {"Codigo ", "Nome Cliente ", "Telefone", "Celular"};
modelo = new DefaultTableModel(col, 0);
tabela = new JTable(modelo) {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
criaJtable();
tabela.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
// int linha = tabela.getSelectedRow();
// int coluna = tabela.getSelectedColumn();
int cod = 0;
cod = (Integer) modelo.getValueAt(tabela.getSelectedRow(), 0);
// JTable tabela = (JTable) e.getSource();
ClienteDao cd = new ClienteDao();
cd.getCliente(cod);
System.out.println("agora to pegando ele : " + cod);
txtNome.setText(cd.getCliente(cod).getNome());
txtCpfCnpj.setText(cd.getCliente(cod).getCpfcnpj());
txtRgIe.setText(cd.getCliente(cod).getRgie());
txtEndereco.setText(cd.getCliente(cod).getEndereco());
txtNumero.setText(cd.getCliente(cod).getNumero());
txtBairro.setText(cd.getCliente(cod).getBairro());
txtComplemento.setText(cd.getCliente(cod).getComplemento());
txtCep.setText(cd.getCliente(cod).getCep());
txtCidade.setText(cd.getCliente(cod).getCidade());
txtEstado.setText(cd.getCliente(cod).getEstado());
txtEmail.setText(cd.getCliente(cod).getEmail());
txtTelefone.setText(cd.getCliente(cod).getTelefone());
txtCelular.setText(cd.getCliente(cod).getCelular());
txtSexo.setText(cd.getCliente(cod).getSexo());
txtContato.setText(cd.getCliente(cod).getContato());
txtObs.setText(cd.getCliente(cod).getObs());
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
}
abaixo segue o criaJtable();
private void criaJtable() {
ClienteDao cli = new ClienteDao();
List clientes = cli.buscarTodos();
for (Object c : clientes) {
Cliente cl = (Cliente) c;
modelo.addRow(new Object[]{cl.getId(), cl.getNome(), cl.getTelefone(), cl.getCelular()});
}
JScrollPane pane = new JScrollPane(tabela, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
tabela.setVisible(true);
//manipulando o cabeçalho da planilha
JTableHeader header = tabela.getTableHeader();
header.setBackground(Color.ORANGE);
jpApresenta.add(pane);
this.add(jpApresenta);
}
aqui onde chamo o botão pesquisar
else if (e.getSource() == btnPesquisa) {
if (txtPesquisa.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "Criando a tabela denovo.....");
PainelApresentacao();
} else {
JOptionPane.showMessageDialog(null, "digitei algo............");
}
}
to nesse problema já um tempão.
acho que o problema é obvio, mas não consigo ve-lo. desdejá agradeço.