Pessoal Boa Noite,
A idéia é assim: quando o usuário digitar mais de 3 caracteres no JTextField ele começa a realizar uma consulta no banco com a string que está digitada pelo método getText().lenght(); E a cada digito no textField e refaz a consulta.
jTextField3.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e){
if (jTextField3.getText().length()>3){
pesquisaCombo();
}
}
o método pesquisaCombo faz uma seleção na base de dados e preenche um combobox. O problema é que isso não funciona. Eu achei alguns exemplos de auto complete, porém nenhum com essa funcionalidade. Alguma luz?
[]s
Oi!
Dá uma olhada nesse post, creio que tem o que vc precisa, está bem completinho:
http://www.guj.com.br/java/116499-auto-complete-combobox-sem-levar-em-conta-acentuacao-resolvido
Grata,
Renata
[quote=RenataFA]Oi!
Dá uma olhada nesse post, creio que tem o que vc precisa, está bem completinho:
http://www.guj.com.br/java/116499-auto-complete-combobox-sem-levar-em-conta-acentuacao-resolvido
Grata,
Renata[/quote]
Então… até aí eu consegui chegar. Inclusive já tinha até achado esse exemplo. O que tem me dado bastante problema (na verdade só dá erro!!) é fazer ele executar um select após o terceiro caractere digitado pra colocar no combo.
Entendi. E qual erro que dá?
Tem como vc postar um trecho do código pra tentarmos entender?
[quote]
Então… até aí eu consegui chegar. Inclusive já tinha até achado esse exemplo. O que tem me dado bastante problema (na verdade só dá erro!!) é fazer ele executar um select após o terceiro caractere digitado pra colocar no combo. [/quote]
coloque essa parte do seu codigo, e mostre o erro na saída da aplicação!
opa… Tá na aí:
final JTextComponent tc = (JTextComponent) comboPesquisa.getEditor().getEditorComponent();
tc.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
if (tc.getText().length()>=3){
List<acessoBean> search = new ArrayList<acessoBean>();
try{
search = t.pesquisa(tc.getText());
System.out.println(search.size()); // isso vai!
// A partir daqui não vai !!
if (comboPesquisa.getItemCount() != 0)
comboPesquisa.removeAllItems();
for (int i =0; i<search.size();i++){
comboPesquisa.addItem(search.get(i).nome);
}
}catch (SQLException ex) {
Logger.getLogger(acesso.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
A linha 15 e 18 dão problema quando eu entro peço pra executar uma consulta SQL. Estou pensando em extender a classe e implementar (ainda não fiz isso e não sei se dá certo). Mas a idéia é pegar o texto com mais de 3 caracteres e retornar uma consulta preenchendo o combo pra seleção. O que eu estou querendo fazer é semelhante a pesquisa da página inicial do google com combobox.
Depois de pesquisar um pouco eu achei a interface DocumentListener. Se eu ponho uma uma saida de texto quando eu digito mais de 3 caracteres vai.
Ah… Acabei de testar. Se eu faço isso em um outro comboBox que não seja o esse funciona.
[]s