13

我想更改一个列表的内容JComboBox(比如添加另一个列表来代替旧列表)。有什么办法我可以做到吗?提前致谢!

4

5 回答 5

11

如果您希望能够在运行时从现有组合框中添加和删除项目,则组合框的底层数据模型需要是 MutableComboBoxModel

谷歌该类的接口信息以及如何使用它的示例。

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

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

于 2008-12-29T00:35:02.927 回答
5

我找到了这个线程并想出了一个快速(而且可能很脏)的解决方案:

oldComboBox.setModel(new JComboBox<>(new_items).getModel());
于 2011-12-05T14:04:39.183 回答
2

当然可以。有几种方法可以使用默认列表模型来操作 JComboBoxes。看看 remove* 方法和 add* 方法:

http://java.sun.com/javase/6/docs/api/javax/swing/JComboBox.html

于 2008-12-29T00:37:54.543 回答
2

您还可以使用 setModel() 替换整个模型。

但是在编写了越来越多的用户界面之后,我发现编写一个自定义的 ComboBoxModel 来包装 ComboBox 呈现的数据结构更有用。恕我直言,这是更可单元测试和更清洁的。

于 2008-12-29T01:41:48.830 回答
0

当您想将任何类型的可变列表连接到 GUI 控件时, Glazed Lists库非常有用。这是一个大型库,可能不适合您的项目,但请查看他们的截屏视频并自行判断。它支持很多相关的东西,比如过滤和自动完成,可以为你节省大量的手动工作。

于 2008-12-29T14:25:37.243 回答