Boa noite, estou tendo problemas com o evento KeyReleased. Meu objetivo usando esse evento era que toda vez que o usuário digitasse um caractere, exibisse uma pesquisa parcial do banco com nomes de pessoas que possuem esse digito no nome e em seguida, ao clicar no nome, preenchesse os campos com os dados do banco. A principio funciona corretamente, porém, depois de apagar o campo de pesquisa e digitar novamente pela terceira vez acontesse alguma coisa que compromete a pesquisa, e a partir de então não aparece mais nada na lista.
Segue abaixo o código:
OBS: é a primeira vez que uso esse site, então me perdoem se acabei fazendo algo errado quanto a visualização do codigo.
package Principal;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Font;
import javax.swing.border.BevelBorder;
import Dao.AdministradorDao;
import javax.swing.JList;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionListener;
import Beans.PerfilBean;
import javax.swing.event.ListSelectionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Color;
public class ConsultarFornecedores extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField txtID;
private JTextField txtPesquisaNome;
private JTextField txtNomeFornecedor;
private JTextField txtTelefone;
private JTextField txtCpfFornecedor;
private JTextField txtEmailFornecedor;
private JTextField txtCidade;
private JTextField txtEstado;
private JTextField txtCep;
private JScrollPane scrollPane = new JScrollPane();
private JList<String> listNomes;
private DefaultListModel<String> ListaModel = new DefaultListModel<String>();
private List<String> NomeFornecedor = new ArrayList<String>();
private AdministradorDao Adm = new AdministradorDao();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ConsultarFornecedores frame = new ConsultarFornecedores();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ConsultarFornecedores() {
setForeground(Color.WHITE);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 629, 494);
this.setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
panel.setBounds(0, 0, 615, 453);
contentPane.add(panel);
panel.setLayout(null);
JButton btnHistoricoDeVenda = new JButton("Historico de venda");
btnHistoricoDeVenda.setBounds(204, 357, 138, 23);
panel.add(btnHistoricoDeVenda);
JButton btnVoltar = new JButton("Voltar");
btnVoltar.setBounds(223, 391, 89, 23);
panel.add(btnVoltar);
listNomes = new JList<String>();
scrollPane.setBounds(156, 51, 258, 107);
listNomes.setVisible(false);
panel.add(scrollPane);
scrollPane.setViewportView(listNomes);
scrollPane.setVisible(false);
listNomes.setModel(ListaModel);
JLabel lblId = new JLabel("ID:");
lblId.setBounds(31, 116, 33, 14);
panel.add(lblId);
txtID = new JTextField();
txtID.setEditable(false);
txtID.setBounds(31, 138, 46, 20);
panel.add(txtID);
txtID.setColumns(10);
JLabel lblNome = new JLabel("Nome:");
lblNome.setBounds(112, 116, 46, 14);
panel.add(lblNome);
txtNomeFornecedor = new JTextField();
txtNomeFornecedor.setEditable(false);
txtNomeFornecedor.setBounds(112, 138, 213, 20);
panel.add(txtNomeFornecedor);
txtNomeFornecedor.setColumns(10);
JLabel lblIdentificao = new JLabel("Identifica\u00E7\u00E3o");
lblIdentificao.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 12));
lblIdentificao.setBounds(10, 91, 109, 14);
panel.add(lblIdentificao);
JLabel lblTelefone = new JLabel("Telefone:");
lblTelefone.setBounds(356, 116, 57, 14);
panel.add(lblTelefone);
txtTelefone = new JTextField();
txtTelefone.setEditable(false);
txtTelefone.setBounds(352, 138, 190, 20);
panel.add(txtTelefone);
txtTelefone.setColumns(10);
JLabel lblCpf = new JLabel("Cpf:");
lblCpf.setBounds(31, 169, 46, 14);
panel.add(lblCpf);
txtCpfFornecedor = new JTextField();
txtCpfFornecedor.setEditable(false);
txtCpfFornecedor.setBounds(31, 194, 163, 20);
panel.add(txtCpfFornecedor);
txtCpfFornecedor.setColumns(10);
JLabel lblEmail = new JLabel("E-mail:");
lblEmail.setBounds(223, 169, 46, 14);
panel.add(lblEmail);
txtEmailFornecedor = new JTextField();
txtEmailFornecedor.setEditable(false);
txtEmailFornecedor.setBounds(223, 194, 190, 20);
panel.add(txtEmailFornecedor);
txtEmailFornecedor.setColumns(10);
JLabel lblEndereço = new JLabel("Endere\u00E7o");
lblEndereço.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 12));
lblEndereço.setBounds(10, 235, 109, 14);
panel.add(lblEndereço);
JLabel lblCidade = new JLabel("Cidade:");
lblCidade.setBounds(223, 260, 46, 14);
panel.add(lblCidade);
txtCidade = new JTextField();
txtCidade.setEditable(false);
txtCidade.setBounds(223, 285, 163, 20);
panel.add(txtCidade);
txtCidade.setColumns(10);
JLabel lblEstado = new JLabel("Estado:");
lblEstado.setBounds(31, 260, 46, 14);
panel.add(lblEstado);
txtEstado = new JTextField();
txtEstado.setEditable(false);
txtEstado.setBounds(31, 285, 163, 20);
panel.add(txtEstado);
txtEstado.setColumns(10);
JLabel lblCep = new JLabel("CEP:");
lblCep.setBounds(416, 260, 46, 14);
panel.add(lblCep);
txtCep = new JTextField();
txtCep.setEditable(false);
txtCep.setBounds(416, 285, 138, 20);
panel.add(txtCep);
txtCep.setColumns(10);
txtPesquisaNome = new JTextField();
txtPesquisaNome.setBounds(156, 30, 258, 20);
panel.add(txtPesquisaNome);
txtPesquisaNome.setColumns(10);
JLabel lblFornecedor = new JLabel("Fornecedor:");
lblFornecedor.setBounds(85, 23, 59, 14);
panel.add(lblFornecedor);
// -----------------------------------------------------------------------------------------
listNomes.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
String Nome = listNomes.getSelectedValue();
System.out.println(Nome);
PreencherDados(Nome);
scrollPane.setVisible(false);
listNomes.setVisible(false);
txtPesquisaNome.setText("");
}
});
txtPesquisaNome.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent arg0) {
if (txtPesquisaNome.getText().equals("")) {
scrollPane.setVisible(false);
listNomes.setVisible(false);
LimparCampos();
} else {
scrollPane.setVisible(true);
listNomes.setVisible(true);
ListarFornecedores();
}
}
});
}
private void ListarFornecedores() {
if (ListaModel.getSize() > 0) {
LimparLista();
}
NomeFornecedor = Adm.BuscarFornecedores(txtPesquisaNome.getText());
int QuantidadeNomes = NomeFornecedor.size();
if (QuantidadeNomes > 0) {
System.out.println("Lista foi populada!");
for (int i = 0; i < QuantidadeNomes; i++) {
ListaModel.addElement(NomeFornecedor.get(i));
listNomes.setModel(ListaModel);
}
} else {
System.out.println("Lista de nomes está vazia!");
}
}
private void LimparLista() {
DefaultListModel<String> Lista = (DefaultListModel<String>) listNomes.getModel();
Lista.removeAllElements();
NomeFornecedor.clear();
}
private void PreencherDados(String Nome) {
PerfilBean Fornecedor = Adm.BuscarDadosFornecedor(Nome);
txtID.setText(Integer.toString(Fornecedor.getId_fornecedor()));
txtNomeFornecedor.setText(Fornecedor.getNome_fornecedor());
txtCpfFornecedor.setText(Fornecedor.getCpf_fornecedor());
txtTelefone.setText(Fornecedor.getTele_fornecedor());
txtEmailFornecedor.setText(Fornecedor.getEmail_fornecedor());
txtEstado.setText(Fornecedor.getUf_fornecedor());
txtCidade.setText(Fornecedor.getCidade_fornecedor());
txtCep.setText(Fornecedor.getCep_fornecedor());
}
private void LimparCampos() {
txtID.setText("");
txtNomeFornecedor.setText("");
txtCpfFornecedor.setText("");
txtTelefone.setText("");
txtEmailFornecedor.setText("");
txtEstado.setText("");
txtCidade.setText("");
txtCep.setText("");
}
}