Doubt about Listener for Jcombobox

Asked

Viewed 1,435 times

1

Someone would 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 select items inside by the bank so I can’t fall into the Listener.

Let’s go explain my project better

The button "..." opens the mode registration window, every time I register a mode I updated the combo box "mode" that at the moment is with the record "dance" 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 when I open my application without activating the Switch and how do I update the combobox without activating the Switch? I want Listener to be enabled only when the user selects an item from the list, but it looks like the "combobox.addItem("Test");" command activates the Listener when updating. Any suggestions?

inserir a descrição da imagem aqui

Method used to update Combobox when I register a mode or when I just open my system.

public void setModalidade() {
    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.setSelectedIndex(i);                 
            }
            i++;
        }

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

These are the systems I use or have used to try.

    JCombobox combobox = new JCombobox<>();
combobox.addActionListener(this); //<-- já tentei esse

combobox.addItemListener(this); //<-- Estou usando esse mas a função "combobox.addItem("Teste"); que utilizou para atualizar meu combobox ativa o ActionListener e o ItemListener
  • It was not clear to me, is there any particular item that should activate the warning? What does the database have to do with the Listener?

  • 1

    I believe your question is a little confused... Try to be clearer...

  • From what I understand, you want to put a Switch in an event that is triggered when the user selects an item from the combo. What you are now using to do this is being triggered when the method addItem it’s called. ls that it? It may be clearer if you enter the code for the Systener you are using, or at least indicate the name of the event you associated with the Systener.

  • " What you are now using to do this is being triggered when the addItem method is called". That’s exactly what’s going on, I’m going to post the code to maybe improve understanding, but the program is already a bit complex, but come on

2 answers

1

I use the Itemlistenner and it works.

I do it this way.

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 this is what you seek and have helped.

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
    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.