У меня эта проблема.У меня есть несколько JComboBox (всего 5).
К каждому comboBox я добавляю ActionListener, но один и тот же ActionListener для всех них, называемый:
ComboBoxActionPerformed(java.awt.event.ActionEvent e)
и когда это действие выполняется,посмотрите на событие (e) и выполните:
JComboBox c = ((JComboBox)e.getSource());
//DO WORK relating to c as thats the combobox that triggered.
, но проблема в том, что когда я что-то изменяю в любом из своих списков, действие всегда вызывается последним полем со списком, к которому я присоединяю actionlistner.
У кого-нибудь есть идеи?
Затем я переключился на ItemListner.Это то, что я делаю
class MyActionListner implements ItemListener
{
//STUFF
@Override
public void itemStateChanged(ItemEvent evt)
{
//DO STUFF
}
}
public JComboBox createCombo()
{
JComboBox box = new JComboBox();
box.setModel(new javax.swing.DefaultComboBoxModel(new String[]
{ "val1", "val2","val3" }));
RulesActionListner actionL = new RulesActionListner();
box.addItemListener(actionL);
return box;
}
, и createCombo вызывается несколько раз, но независимо от того, какой элемент поля со списком был изменен в стороне, мой метод ItemStateChanged выходит из последнего созданного поля со списком
createCombo вызывается во время выполнения, поэтому у меня есть переменное число комбинированных списков.