Galera boa tarde, primeiramente deixa eu explicar como esta meu programa, possuo 2 tabelas (Clientes e Endereços)
na tabela clientes, ha uma chave estrangeira (fk_endereco) que referencia o endereco respectivo do cliente na tabela endereços…ate ai blz…
criei uma consulta que pega o cliente joga na jTable…e após ser dado 2 cliques na linha escolhida (no cliente desejado)…o programa abre outra janela com vários jTextFields ja preenchidos com as informaçoes do cliente escolhido…
ate ai tdo bem…roda perfeitamente…porem só esta rodando qndo eu seleciono a 1ª LINHA DA JTABLE…se eu tentar uma linha abaixo da o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at softshoes.view.consultas.ConsultaClientes.jTable1MouseClicked(ConsultaClientes.java:180)
at softshoes.view.consultas.ConsultaClientes.access$100(ConsultaClientes.java:21)
at softshoes.view.consultas.ConsultaClientes$3.mouseClicked(ConsultaClientes.java:81)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6219)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4229)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
esse numero index e size mudam de acordo com a linha que eu escolher…
o unico problema eh esse…como faço para poder pesquisar tbm das linhas subsequentes?
pq só ta fazendo a pesquisa da 1ª LINHA…por favor me ajudem…
segue abaixo o codigo responsavel pela busca no banco
//CHAMAR CLIENTE ESCOLHIDO APÓS PESQUISA DA TABELA
public List<Cliente> selectClientePesquisa(String consulta ) throws SQLException {
List<Cliente> listaConsulta = new ArrayList<Cliente>();
try {
Connection con = ConnectionFactory.getConnection();
try {
PreparedStatement stmt = con.prepareStatement( " select * from clientes where nome like ?" );
stmt.setString(1, consulta + "%");
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
String nome = rs.getString("nome");
String cpf = rs.getString("cpf");
String rg = rs.getString("rg");
String sexo = rs.getString("sexo");
Date data_nascimento = rs.getDate("data_nascimento");
String telefone = rs.getString("telefone");
String email = rs.getString("email");
int end = rs.getInt("fk_endereco");
listaConsulta.add(new Cliente(nome, cpf, rg, sexo, data_nascimento, telefone, email, end));
}
rs.close();
stmt.close();
} finally {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return listaConsulta;
}
//CHAMAR ENDERECO DO CLIENTE APOS PESQUISA
public List<Endereco> selectEnderecoPesquisa(int a ) throws SQLException {
List<Endereco> listaConsulta = new ArrayList<Endereco>();
try {
Connection con = ConnectionFactory.getConnection();
try {
PreparedStatement stmt = con.prepareStatement( " select * from enderecos where id_endereco = " + a);
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
String rua = rs.getString("rua");
String bairro = rs.getString("bairro");
String complemento = rs.getString("complemento");
String cep = rs.getString("cep");
String cidade = rs.getString("cidade");
String uf = rs.getString("uf");
listaConsulta.add(new Endereco(rua, bairro, complemento, cep, cidade, uf));
}
rs.close();
stmt.close();
} finally {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return listaConsulta;
}
e aqui segue o codigo do evento Mouse Clicked…sobre a tabela…
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
if(evt.getClickCount() == 2){
int r = jTable1.getSelectedRow();
try {
dao.selectClientePesquisa((String) jTable1.getValueAt(r, 1));
List<Cliente> teste = dao.selectClientePesquisa(consulta);
teste.get(r).getNome();
teste.get(r).getCpf();
teste.get(r).getRg();
teste.get(r).getSexo();
teste.get(r).getData();
teste.get(r).getTelefone();
teste.get(r).getEmail();
teste.get(r).getEndereco();
int a = teste.get(r).getEndereco();
JOptionPane.showMessageDialog(null, a);
dao.selectEnderecoPesquisa(a);
List<Endereco> teste2 = dao.selectEnderecoPesquisa(a);
teste2.get(r).getRua();
teste2.get(r).getBairro();
teste2.get(r).getComplemento();
teste2.get(r).getCep();
teste2.get(r).getCidade();
teste2.get(r).getUf();
TelaDeClientes InformacoesClientes = new TelaDeClientes();
InformacoesClientes.preencherCamposCliente(teste.get(r).getNome(), teste.get(r).getCpf(), teste.get(r).getRg(), teste.get(r).getSexo(), teste.get(r).getData(), teste.get(r).getTelefone(), teste.get(r).getEmail(), teste.get(r).getEndereco());
InformacoesClientes.preencherCamposEndereco(teste2.get(r).getRua(), teste2.get(r).getBairro(), teste2.get(r).getComplemento(), teste2.get(r).getCep(), teste2.get(r).getCidade(), teste2.get(r).getUf());
InformacoesClientes.show();
} catch (SQLException ex) {
Logger.getLogger(ConsultaClientes.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
eu fiz a mesma coisa com CONSULTA DE PRODUTOS…como só existe uma tabela no banco de produtos…funcionou perfeitamente…
agora qndo se tem 2 tabelas…ta dando esses conflitos ai…oq fazer??
grato