Quando a combo é preenchida através do resultado de um select, utilizando o addItem, o evento é disparado. Isso sem nem mesmo clicar nela. Como poderíamos resolver esta questão? Estamos usando o ActionListener.
Desde já gratos,
Gêmeos Guimarães
posta o código pra gente dar uma olhada
Eu fazia um simples gambiarra:
Antes de add os itens da combo eu adicionava
combo.addItem(""); // Vazio
if(combo.getSelectedItem != null && !combo.equals("")){
executa tudo o que tem na action
}
Em alguns momentos na vida temos que fazer essas coisas. ^^
Abraço.
Resolvido!!!
Excelente ideia GabrielCardelli !! O código ficou assim:
public void preencherOnibus(ArrayList onibus)
{ // método para adicionar os itens na combo
modeloComboOnibus = new DefaultComboBoxModel();
for(int i=0;i<onibus.size();i++)
{
modeloComboOnibus.addElement(onibus.get(i));
}
cmbOnibus.setModel(modeloComboOnibus);
cmbOnibus.setSelectedIndex(-1);
}
e o método para ler a combo
public String lerComboOnibus()
{
if(cmbOnibus.getSelectedIndex() == -1) // se não estiver nada selecionado, ele retorna vazio para a comparação no action
return “”;
return (String) cmbOnibus.getSelectedItem();
}
O modelo para a combo é fundamental para que não seja disparado o evento em todo o item adicionado na combo, por isso adiciona todos no modelo, e depois o modelo na combo. Quando nós colocamos a linha: cmbOnibus.setSelectedIndex(-1); , não precisa adicionar o o vazio na combo.
Valeu mesmo pela ajuda.