2010-09-24 88 views
0

此Java Swing JComboBox根據對系統配置的更改進行修改。 在示例圖像中,「按下選擇」是指未選擇任何內容並且配置中有一個「測試單元」,但在下拉菜單中顯示「按下選擇」兩次。額外的「按下選擇」項目的行爲像項目0,所以它是功能性的,但它看起來這樣糟糕。有任何想法嗎?解決:爲什麼JComboBox似乎添加多個項目實例?

public class Controller extends javax.swing.JFrame implements Observer { 
    ... 
    public void update(Observable o, Object arg) { 
     jComboBox.removeAllItems(); 
     jComboBox.addItem("Press to Select"); 
     String[] names = Configuration.getNames(); 
     for (String n : names) { 
      jComboBox.addItem(n); 
     } 
     ... 

alt text

+1

你確定你沒有在'JComboBox#addItem'中放置一個斷點而不是偶然添加它兩次嗎?你有自定義渲染器或類似的東西嗎? – 2010-09-24 19:50:49

+0

F!是。我一直在試圖找到它的調試器一段時間,但是,它就是這樣。仍在圍繞NetBeans IDE學習我的方法。謝謝。 – jacknad 2010-09-24 20:03:03

回答

0

愚蠢的錯誤。添加兩次(@Geoffrey)。花太長時間才能找到第二個添加到另一個班。我的祖母告誡我不要變老。

0

是該update方法由事件指派線程或其他線程叫什麼名字? (如果您不確定,請登錄SwingUtilities.isEventDispatchThread())。如果是任何其他線程,請將更新移至Runnable,並使用SwingUtilities.invokeLater()將其更新安排在EDT上執行。

嘗試setSelectedItem(null)作爲更新的一部分。

相關問題