2012-06-07 74 views
1

我有這個程序的一小部分,它使用JComboBox從中選擇某個字符串。我在互聯網上發現了這個代碼,並嘗試了它,並且它在當時有效,但是當我嘗試在選擇它之後再次在不同的地方調用該字符串時,它會返回null。下面是代碼:JComboBox設置一個字符串,然後字符串返回null

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,它打印出空。幫幫我。 在此先感謝。

回答

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