JComboBox Alteração De Seleção Do Ouvinte?
-
09-06-2019 - |
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.
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.