【问题标题】:Why does JComboBox seem to add multiple item instances?为什么 JComboBox 似乎添加了多个项目实例?
【发布时间】:2018-05-08 23:14:26
【问题描述】:

此 Java Swing JComboBox 是根据系统配置的更改进行修改的。 在示例图像中,“Press to Select”是未选择任何内容且配置中有一个“Test Unit”,但“Press to Select”在下拉菜单中显示两次的情况。附加的“Press to Select”项目的行为类似于项目 0,因此它可以正常工作,但这样看起来很糟糕。有什么想法吗?

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);
        }
        ...

【问题讨论】:

  • 您确定不是在JComboBox#addItem 中放置断点意外添加了两次吗?你有自定义渲染器或类似的东西吗?
  • F!是的。我一直在敲打调试器试图找到它一段时间,但是是的,它就在那里。仍在学习如何使用 NetBeans IDE。谢谢。

标签: java swing jcombobox


【解决方案1】:

update 方法是由事件调度线程调用还是由其他线程调用? (如果您不确定,请登录 SwingUtilities.isEventDispatchThread())。如果是其他线程,请将您的更新移动到 Runnable 并使用 SwingUtilities.invokeLater() 安排它在 EDT 上执行。

尝试将setSelectedItem(null) 作为更新的一部分。

【讨论】:

    【解决方案2】:

    愚蠢的错误。添加两次(@Geoffrey)。在另一个班级中找到第二个添加的时间太长了。我的祖母警告我不要变老。

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多