Question about Listener for JComboBox

1

Would anyone know to tell me some Listener for when I select an item in JComboBox it gives me a warning for example. Remembering that when I open my component (JFrame) I hide items in there by the bank so I can not fall into the Listener.

Lets go there explaining my project better

The "..." button opens the mode register window, every time I register a mode I update the combo box "mode" which currently has the "dance" record every time I choose a mode in my combobox it will open a new window to register the monthly fee. So how do I load my combobox by the time I open my application without activating the listener and how do I update the combobox without activating the listener? I want the listener to only be activated when the user selects an item from the list, but by what seems the command "combobox.addItem (" Test "); activates the listener at the time of updating. Any suggestions?

MethodusedtoupdatetheComboboxwhenIregisteramodeorwhenIjustopenmysystem.

publicvoidsetModalidade(){try{this.cboModalidade.removeAllItems();this.listaModalidade=newArrayList<Modalidade>(newModalidadeDAO().listaTodos());inti=0;for(Modalidademodalidade:listaModalidade){this.cboModalidade.addItem(modalidade.getTituloModalidade());if(this.modalidade.getTituloModalidade().equalsIgnoreCase(modalidade.getTituloModalidade())){this.cboModalidade.setSelectedIndex(i);}i++;}}catch(SQLExceptione){e.printStackTrace();}}

ThisisthelistenerIuseorhavealreadytried.

JComboboxcombobox=newJCombobox<>();combobox.addActionListener(this);//<--játenteiessecombobox.addItemListener(this);//<--Estouusandoessemasafunção"combobox.addItem("Teste"); que utilizou para atualizar meu combobox ativa o ActionListener e o ItemListener
    
asked by anonymous 19.05.2014 / 20:56

2 answers

1

It's personal the only solution I found was.

public void setModalidade() {
        this.cboModalidade.removeActionListener(this); //<-- Quando eu vou setar o combobox com dados eu desativo o ActionListener
        try {
            this.cboModalidade.removeAllItems();

            this.listaModalidade = new ArrayList<Modalidade>(new ModalidadeDAO().listaTodos());

            int i = 0;
            for(Modalidade modalidade : listaModalidade) {
                this.cboModalidade.addItem(modalidade.getTituloModalidade());
                if(this.modalidade.getTituloModalidade().equalsIgnoreCase(modalidade.getTituloModalidade())) {
                    this.cboModalidade.addActionListener(this); //<-- quando eu realizo o cadastro de uma nova modalidade e dou um refresh no meu combobox eu ativo o Actionlister para ele seleciona o id da modalidade que acabei de cadastrar e automaticamente abrir a janela para inserir e mensalidade.
                    this.cboModalidade.setSelectedIndex(i);                 
                }
                i++;
            }

        } catch(SQLException e) {
            e.printStackTrace();
        }

        this.cboModalidade.addActionListener(this); //<-- Quando termina de setar o combobox eu ativo o Actionlistener novamente
    }
    
20.05.2014 / 00:24
1

I use the ItemListenner and it works.

I do this as follows.

combobox.addItemListener(new java.awt.event.ItemListener() {
   public void itemStateChanged(java.awt.event.ItemEvent evt) {
        if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) {
             //o tratamento a esse evento aqui.
            //ele dispara duas vezes a cada item selecionado, 
            //um para o que foi DESELECTED e outro para o SELECTED por isso a comparação.

        }

   } 

}

I hope to be what you are looking for and to have helped.

    
20.05.2014 / 16:27