Deu certo,mas olha só,eu tenho um JTextField e quero um AutoComplete que vem do banco(qnd a pessoa for digitar um nome para buscar no JTextField aparecem sugestoes com os nomes já cadastrados no banco),pra isso eu coloquei um evento para que a cada caractér digitado o sistema faça a busca e apareça com as sugestões.
Esse é o código do evento(nome do JTextField é ‘teste’):
private void testeKeyTyped(java.awt.event.KeyEvent evt) {
pessoalControl pc = new pessoalControl();
List Nomes = pc.RetornaListaNomes(teste.getText().trim());
System.out.println(Nomes); /// o nomes estao vindo corretamente para essa lista 'Nomes',mandei imprimir pra ter certeza.
jlist = new JList(Nomes.toArray());
AutoCompleteDecorator.decorate(jlist,teste );
Sendo que ‘jlist’ ja foi declarada no inicio do código da classe.
Esse é o código do método ‘RetornaListaNomes’ que retorna uma list com todos os nomes que possuem aqueles caracteres digitados:
private String consultaNomesPessoal = "Select nome FROM PESSOAL WHERE Nome LIKE ?";
public List<String> RetornaListaNomes(String nome)
{
List<String> Nomes = new ArrayList();
dbAcess sql = new dbAcess();
String Nome;
try {
pstm = (PreparedStatement) sql.conectar().prepareStatement(consultaNomesPessoal);
pstm.setString(1, "%" + nome + "%");
rs = pstm.executeQuery();
while (rs.next()){
String Nome2;
Nome2 = (rs.getString("Nome"));
Nomes.add(Nome2);
}sql.desconectar();
}
catch (SQLException ex) {
Logger.getLogger(pessoalControl.class.getName()).log(Level.SEVERE, null, ex);
}
return Nomes;
}
Só que quando digito algum caracter no JTextField gera essa exceção:
Só que eu verifiquei o método ‘decorate’ na classe ‘AutoCompleteDecorator’ e existe uma implementação desse método com os seguintes argumentos:
decorate(JList list,JTextComponent textComponent)
e quando eu chamo o método ‘decorate’ eu passo esse tipo de parametros mesmo,uma JList,e um JTextField,será q o JTextField não é um JTextComponent?
O que eu faco?
vlw galera!!