Pergunta

Eu estou tentando chegar a um evento disparado sempre que uma escolha é feita a partir de um JComboBox.

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

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

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

Como faço para ser notificado de uma alteração de seleção em um JComboBox?**

Editar: Eu tenho de pedir desculpas.Acontece que eu estava usando uma subclasse de comportamento inadequado JComboBox, mas eu vou deixar a questão desde a sua resposta é boa.

Foi útil?

Solução

Ele deve responder a ActionListeners, como este:

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

@João Calsbeek aponta corretamente que addItemListener() vai trabalhar, também.Você pode obter 2 ItemEvents, porém , um para o deselection do item selecionado anteriormente, e outro para a seleção do novo item.Basta não usar ambos os tipos de evento!

Outras dicas

Código de exemplo ItemListener implementação

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

Agora teremos apenas o item selecionado.

Em seguida, basta adicionar o ouvinte a sua JComboBox

addItemListener(new ItemChangeListener());

Gostaria de tentar a itemStateChanged() método de ItemListener interface se jodonnell a solução da falha.

Aqui é a criação de uma caixa de Combinação adicionando um listener para a selecção do item de mudança:

    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
        }
    });
}

Você pode tentar estes

 int selectedIndex = myComboBox.getSelectedIndex();

-ou-

Object selectedObject = myComboBox.getSelectedItem();

-ou-

String selectedValue = myComboBox.getSelectedValue().toString();

Recentemente eu estava procurando por esta mesma solução e conseguiu encontrar um simples, sem atribuição de variáveis específicas para o último item selecionado e o novo item selecionado.E essa pergunta, embora muito útil, não fornecer a solução que eu precisava.Isso resolveu o meu problema, eu espero que ele resolve seu e de outros.Obrigado.

Como faço para obter o anterior ou o último item?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top