2013-05-02 4 views
0

У меня есть два 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."); 
     } 
    } 
}); 
+1

Отформатируйте свой код так, чтобы его можно было читать – LionC

ответ

0

Это выглядит как ваш код не получает новый набор элементов из базы данных, так что пользователь не может ничего, кроме «Выбор блока» выберите, какой ваш второй код блок игнорирует.

+0

Метод добавления элементов во второй блок jcombo выполняется после выбора элемента в первом JComboBox. я просто не добавил код к моему вопросу, который я постараюсь сделать сейчас. – user2255225

+0

Где добавляется агент actionListener? Вы вызываете addActionListener() каждый раз, когда вы обновляете данные в единицах? –

+0

nope его вызываемый вне метода, где данные обновляются. Я попытался вызвать метод, в котором данные были обновлены, но это не имело никакого значения. – user2255225