Erro na atualização do jcombobox

9 respostas
T

Boa tarde!

Tenho um jcombobox(desktop) atualizado a partir do meu banco por meio de um evento.
O problema é o seguinte: toda vez que eu clico no combo ele atualiza novamente e soma os valores, ficando assim, uma lista inacabável de informações repetidas.
Alguém sabe como resolver isso?

Thanks…

thiroli

9 Respostas

C

Apesar de você não ter especificado exatamente qual o evento que você está tratando. Provavelmente você está utilizando um evento do JComboBox que é disparado quando do preenchimento do mesmo (JComboBox), portanto, toda vez que você o preenche, automaticamente o evento é disparado novamente, gerando assim, um loop infinito.

T

Exatamente isso que acontece, segue código para verificação:

private void comboSituacaoActionPerformed(java.awt.event.ActionEvent evt) throws Exception {
        ConexaoBanco banco = new ConexaoBanco();
        combo = banco.Consulta("SELECT DISTINCT IM_SITUACAO FROM IMOVEL");
        while (combo.next()){
        edt_Sit_Imovel.addItem(combo.getString(1));
        }
  }
Jeferson_Manetti

thiroli:
Exatamente isso que acontece, segue código para verificação:

private void comboSituacaoActionPerformed(java.awt.event.ActionEvent evt) throws Exception { ConexaoBanco banco = new ConexaoBanco(); combo = banco.Consulta("SELECT DISTINCT IM_SITUACAO FROM IMOVEL"); while (combo.next()){ edt_Sit_Imovel.addItem(combo.getString(1)); } }

iaew cara blz…

bom acho q vc colocou o seu codigo no lugar errado…
o evento actionperformed e acinado toda vez q vc clica no combo… por isso ele carrega toda vez…
para corrigir este problema vc deveria colocar este codigo no construtor…

public CostrutordaClasse(){

        ConexaoBanco banco = new ConexaoBanco();
        combo = banco.Consulta("SELECT DISTINCT IM_SITUACAO FROM IMOVEL");
        while (combo.next()){
        edt_Sit_Imovel.addItem(combo.getString(1));
        }

}

pronto agora qnd vc chamar sua classe ele vai carregar o comboBox com os itens do banco…

vc pode usar o ActionPerformed do combo para realiza alguma outra tarefa q dependa da escolha feita no combo…
ex.: temos 2 combos… 1 de Estado e outro de Cidade…
qnd escolho o de estado (dispara o actionPerformed) ele completa o de Cidades…
entendeu?

T

Bom dia!

Bem pensado Jeferson_Manetti, mas acontece o seguinte…
Já tenho um método como este para alimentar inicialmente o meu form. Ele é alimentado com as informações do último registro do banco de dados.
O que eu preciso mesmo é de poder editar este combobox no botão e salvar no registro selecionado.

Thanks,

thiroli

Jeferson_Manetti

bom dia

hum… não fico muito claro pra mim sua real necessidade…

se puder esclarecer melhor… talvez descrever a situação pra gente…
qual e o tipo de informação q este combo vai receber…
se ele se relaciona com algum outro componente( tipo um table)…

como meus professores da pos dizem… descreva o dominio do problema…
heheheheh

blz cara!!!

T

Olá…

Bom, vou tentar novamente desde o início…rsss
Preencho um formulário com o Firebird, em que, alguns jComboBox já vem devidamente alimentados com as informações de um registro, ou seja, já tenho um código no construtor.
Só que, quando o usuário quiser alterar os dados do combo, ele(combo) deve realizar uma nova consulta e apresentar as opções de uma outra tabela do BD com as opções disponíveis.
Agora acho que é isso!
Espero que entendam e desculpem me pela falta de clareza.

Thanks.

thiroli

fabiofalci

E as informações antigas continuam na combo? Esse é o problema?
Vc precisa limpar o model da combo.

((DefaultComboBoxModel) comboBox.getModel()).removeAllElements();
Jeferson_Manetti

[quote=fabiofalci]E as informações antigas continuam na combo? Esse é o problema?
Vc precisa limpar o model da combo.

((DefaultComboBoxModel) comboBox.getModel()).removeAllElements();

se o problema for a atualização do combo…
vc pode fazer oque o amigo acima disse…
limpando o combo e depois atualizando com os novos dados…

se vc postar os codigos talvez possamos ajudar melhor ^^

T

Poxa vida!
Muito obrigado, funcionou direitinho.
Thanks fabiofalci!
Thanks Jeferson_Manetti!

thiroli

Criado 16 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 9
Participantes 4