java - setar - setselecteditem




Ouvinte de mudança de seleção JComboBox? (4)

Eu estou tentando obter um evento para disparar sempre que uma escolha é feita a partir de um JComboBox .

O problema que estou tendo é que não há nenhum método addSelectionListener() óbvio.

Eu tentei usar actionPerformed() , mas nunca é acionado.

Curto de substituir o modelo para o JComboBox , estou sem ideias.

Como eu sou notificado de uma mudança de seleção em um JComboBox ? **

Edit: Eu tenho que me desculpar. Acontece que eu estava usando uma subclasse do JComboBox , mas vou deixar a questão em JComboBox , já que sua resposta é boa.


Aqui está criando um ComboBox adicionando um ouvinte para a mudança de seleção de itens:

    JComboBox comboBox = new JComboBox();

    comboBox.setBounds(84, 45, 150, 20);
    contentPane.add(comboBox);

    JComboBox comboBox_1 = new JComboBox();
    comboBox_1.setBounds(84, 97, 150, 20);
    contentPane.add(comboBox_1);
    comboBox.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent arg0) {
            //Do Something
        }
    });
}

Ele deve responder aos ActionListeners , assim:

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@John Calsbeek corretamente aponta que addItemListener() também funcionará. Você pode obter 2 ItemEvents , no entanto, um para a desmarcação do item selecionado anteriormente e outro para a seleção do novo item. Apenas não use os dois tipos de eventos!


Exemplo de ItemListener implementação de ItemListener

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

Agora vamos obter apenas o item selecionado.

Em seguida, basta adicionar o ouvinte ao seu JComboBox

addItemListener(new ItemChangeListener());

Recentemente, eu estava procurando por essa mesma solução e consegui encontrar uma simples, sem atribuir variáveis ​​específicas para o último item selecionado e o novo item selecionado. E essa pergunta, embora muito útil, não forneceu a solução que eu precisava. Isso resolveu meu problema, espero que resolva o seu e os outros. Obrigado.

Como obtenho o item anterior ou último?