更改JComboBox的内容

时间:2008-12-29 00:22:01

标签: java swing jcombobox

我想更改JComboBox列表的内容(比如添加另一个列表而不是旧列表)。有什么方法可以做到吗? 提前谢谢!

5 个答案:

答案 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库非常有用。这是一个大型图书馆,可能不适合您的项目,但看看他们的截屏并自己判断。它支持许多相关的东西,如过滤和自动完成,可以为你节省大量的手工工作。