java - 更新 JComboBox

标签 java swing arraylist jcombobox

所以我使用一个 JComboBox 和一个 ArrayList:

protected JComboBox<String> jcb;
protected ArrayList<String> favourites;
favourites.add("Favourites");
favourites.add("-0.21 + 0.77");
favourites.add("-0.16 + -0.89");
jcb = new JComboBox(favourites.toArray());

这很好用,我可以选择每个选项并执行我需要执行的选定语句。但是,当我希望更新 JComboBox 时,它不会在我的 GUI 上更新。在我调用的另一种方法中:

favourites.add("10 + 4");
jcb.revalidate();
jcb.repaint();

我已经测试过 ArrayList 已经更新(见下文),但是它没有显示在我的 GUI 上,有什么建议吗?谢谢,

for (String s : favourites)
System.out.println(s);

最佳答案

Swing 基于 MVC 模式。因此使用模型。对模型的更改将自动更新 JComboBox。如需更深入的了解,请阅读 Swing Architecture Overview和你的情况How to use ComboBoxes .

DefaultComboBoxModel favourites = new DefaultComboBoxModel();
favourites.addElement("Favourites");
favourites.addElement("-0.21 + 0.77");
favourites.addElement("-0.16 + -0.89");
jcb = new JComboBox(favourites);

在其他GUI方法调用中

favourites.addElement("10 + 4");

关于java - 更新 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22273311/

相关文章:

java - 如何在Java中将按钮缓慢地从一个位置移动到另一个位置?

java - Java 中如何计算百分比?

java - 在 JFrame 中使用 BoxLayout

java - 合并和排序列表

java - 如何确保数组中包含值?

java - 获取特定分区的最新/最新条目

Java:显示 JPopupMenu 而不传递调用程序组件

java Swing 停止函数

java - 数组排列完毕后,如何使用 for 循环搜索元素?

java - Android 错误 : You must specifiy a valid layout reference. 布局 ID。 eclipse 中