Java 更改JComboBox的内容

Java 更改JComboBox的内容,java,swing,jcombobox,Java,Swing,Jcombobox,我想更改JComboBox列表的内容(比如添加另一个列表代替旧列表)。我有没有办法做到这一点? 提前谢谢 如果希望能够在运行时从现有组合框中添加和删除项,则组合框的基础数据模型需要是可变组合框模型 谷歌为该类提供接口信息和如何使用它的示例 请注意,如果希望用户键入新值,还需要使该框可编辑 您可以找到一些示例链接。当然可以。有几种方法可以使用默认列表模型操纵JComboxes。请看一下remove*方法和add*方法: 您也可以用setModel()替换整个模型 但是在编写了越来越多的用户界面之后

我想更改
JComboBox
列表的内容(比如添加另一个列表代替旧列表)。我有没有办法做到这一点?
提前谢谢

如果希望能够在运行时从现有组合框中添加和删除项,则组合框的基础数据模型需要是可变组合框模型

谷歌为该类提供接口信息和如何使用它的示例

请注意,如果希望用户键入新值,还需要使该框可编辑


您可以找到一些示例链接。

当然可以。有几种方法可以使用默认列表模型操纵JComboxes。请看一下remove*方法和add*方法:


您也可以用setModel()替换整个模型


但是在编写了越来越多的用户界面之后,我发现编写自定义ComboBox模型来包装ComboBox呈现的数据结构更有用。这是一个更易于单元测试和更干净的库,IMHO。

当您想要将任何类型的可变列表连接到GUI控件时,该库非常有用。这是一个很大的ish库,可能不适合您的项目,但请查看他们的屏幕广播并自己判断。它支持许多相关功能,如过滤和自动完成,可以为您节省大量手动工作。

我找到了这个线程,并提出了一个快速(可能是肮脏的)解决方案:

oldComboBox.setModel(new JComboBox<>(new_items).getModel());
oldComboBox.setModel(新JComboBox(新的_项).getModel());

不幸的是,并不是每件事都能应付模型的变化。事实上,肮脏-距离我见过的简单解决方案最远(我也见过很多次,做错事情的创造力是巨大的:-)而且这个问题已经有了一个公认的解决方案。您认为这不合理的任何原因,以及OP/社区会从中受益的原因(解决方案被接受后3年)?我没有彻底阅读答案-吸取教训。这是一个垃圾解决方案,用来取代已经提出的模型,而且可以做得更优雅。你为什么说这是一个糟糕的答案?与其他人不同,我认为这是一个相当聪明的答案!谢谢@pal.@Mehran我感谢pal发布这个解决方案,因为它应该可以工作。然而,其他评论正确地指出,这是一个“肮脏”的修复,而不是一个简单的修复。重置JComboBox的整个模型接近于要求GUI完全重新生成该JComboBox。程序最好使用公认答案中提到的可变ComboBox模型,它允许程序编辑现有的JComboBox,而不是这样做,这相当于划掉大部分JComboBox的数据并重新创建它。我也需要这个答案。尽管我使用了JCombobox(newData);以前一次又一次。但它似乎势不可挡。谢谢@AndreiC对我来说,这是最好的答案<代码>x.removeAllItems();x、 附加项(obj1);x、 附加项(obj2)包含了我可能遇到的大多数情况。还有它的吻。