Preenchimento da Combo dispara evento actionPerformed

3 respostas
G

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

3 Respostas

lordtiago

posta o código pra gente dar uma olhada

GabrielCardelli

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.

G

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.

Criado 14 de agosto de 2010
Ultima resposta 14 de ago. de 2010
Respostas 3
Participantes 3