2012-06-07 2 views
1

У меня есть эта небольшая часть программы, которая использует JComboBox для выбора определенной строки из нее. Я нашел этот код в Интернете и попробовал его, и он работает в то время, но когда я попытаюсь снова вызвать строку в другом месте после ее выбора, он возвращается обратно. Вот код:JComboBox устанавливает строку, а затем возвращается нуль

private class courseAL implements ActionListener{ 
    public void actionPerformed(ActionEvent e) { 
     Start_round sr = new Start_round(); 
     JComboBox cb = (JComboBox)e.getSource(); 
     sr.CourseName = (String)cb.getSelectedItem(); 
     System.out.println(sr.CourseName); 
    } 
} 

Он печатает правильное название поля для гольфа в этой ситуации, но когда я пытаюсь вызвать sr.CourseName снова в diffrent месте после его выбора, он печатает нуль , Помогите. Спасибо заранее.

ответ

1

ActionEvent передается после выбора, а также отмена выбора, поэтому второй из них является отменой одного элемента перед тем, как будет выбран новый элемент. Используя ItemListener, вы можете определить, является ли событие выбором или отменой выбора.

private class courseAL implements ItemListener { 
    public void itemStateChanged(ItemEvent e) { 
     if (e.getStateChange() == ItemEvent.SELECTED) { 
      Start_round sr = new Start_round(); 
      sr.CourseName = (String) e.getItem(); 
      // alternate: 
      // JComboBox cb = (JComboBox) e.getItemSelectable(); 
      // sr.CourseName = (String) cb.getSelectedItem(); 
      System.out.println(sr.CourseName); 
     } 
    } 
} 
+0

Я сделал это, а затем, когда я попытаюсь вызвать sr.CourseName снова, он все равно возвращается null. Я скопировал и вставил кстати – tyty5949

+0

Попробуйте закомментированный вариант; это не должно иметь значения, но может также попробовать. Отлаживайте вызов itemStateChanged; печатать информацию, такую ​​как e.getItem() и e.getStateChange(). – Vulcan

+0

Что вы подразумеваете под отладкой, потому что все, что я знаю (что не так много), не работает! – tyty5949

Смежные вопросы