我想更改JComboBox
列表的内容(比如添加另一个列表而不是旧列表)。有什么方法可以做到吗?
提前谢谢!
答案 0 :(得分:11)
如果您希望能够在运行时添加和删除现有组合框中的项目,则组合框的基础数据模型必须是MutableComboBoxModel
Google用于该类的接口信息以及如何使用它的示例。
请注意,如果您希望用户键入新值,则还需要使该框可编辑。
您可以找到一些示例here的链接。
答案 1 :(得分:5)
我找到了这个帖子并提出了一个快速(可能很脏)的解决方案:
oldComboBox.setModel(new JComboBox<>(new_items).getModel());
答案 2 :(得分:2)
当然可以。有几种方法可以使用默认列表模型来操作JComboBoxes。看看remove *方法并添加*方法:
http://java.sun.com/javase/6/docs/api/javax/swing/JComboBox.html
答案 3 :(得分:2)
您还可以使用setModel()完整替换模型。
但是在编写了越来越多的用户界面后,我发现编写一个自定义的ComboBoxModel来包装ComboBox所呈现的数据结构会更有用。恕我直言,这更具有单元可测试性和清洁性。
答案 4 :(得分:0)
当您想要将任何类型的可变列表连接到GUI控件时,Glazed Lists库非常有用。这是一个大型图书馆,可能不适合您的项目,但看看他们的截屏并自己判断。它支持许多相关的东西,如过滤和自动完成,可以为你节省大量的手工工作。