2010-09-24 149 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)作为更新的一部分。

相关问题