У меня есть два JComboBoxes; один удаляет все элементы в другом, если он уже заполнен, а затем добавляет новый набор элементов, а второй запускает событие, которое получает информацию из базы данных с использованием выбранного элемента. Проблема возникает после того, как первый поле со списком удалит элементы и добавит новые; когда я выбираю любой из элементов во втором JComboBox, событие, которое срабатывает, больше не происходит.JComboBox ActionListener не работает после удаленияAllItems() был использован
Ниже я представил фрагменты моего кода:
Первый выпадающий
cmbIDs.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
selection = (String)cmbIDs.getSelectedItem();
if (!(selection.equals("Select an username")))//current selection in combobox is stored as string
{
comboActivate(selection);
if (!unitC.getText().equals("")){
unitC.setText("");
}
if (!lecturer.getText().equals("")){
lecturer.setText("");
}
if (!(courseD.getText().equals("Not Enrolled"))){
populateUnits(selection);
}
}
else{
JOptionPane.showMessageDialog(null,"Please select a Surname.");
}
}
});
Удаление элементов внутри populateUnits (String selectionID):
try
{
units.removeAllItems();
units.addItem("Select a Unit");
}
catch (NullPointerException npe)
{
units.addItem("Select a Unit");
}
После этого инструкции будут отправлены через клиента к серверу, на котором запрашивается db, и сервер отвечает информацией, которая затем добавляется ко второму JComboBox. Уверяю вас также, что элементы добавляются в JComboBox после использования removeAllItems().
Второй JComboBox:
units.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ue)
{
uSelect = (String)units.getSelectedItem();
if (!(uSelect.equals("Select a Unit")))//current selection in combobox is stored as string
{
System.out.println(uSelect);
unitActivate(uSelect);
}
else
{
JOptionPane.showMessageDialog(null,"Please select a Unit.");
}
}
});
Отформатируйте свой код так, чтобы его можно было читать – LionC