更新JComboBox

1 java swing arraylist jcombobox

所以我用的JComboBoxArrayList:

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());
Run Code Online (Sandbox Code Playgroud)

这工作正常,我可以选择每个选项,并执行我需要做的选定的语句.但是,当我希望更新它时JComboBox,它不会在我的GUI上更新.在另一种方法中我称之为:

favourites.add("10 + 4");
jcb.revalidate();
jcb.repaint();
Run Code Online (Sandbox Code Playgroud)

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

for (String s : favourites)
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

Ren*_*ink 5

Swing基于MVC模式.因此使用模型.对模型的更改将自动更新JComboBox.为了更深入地理解一般阅读Swing架构概述和您的案例如何使用ComboBoxes.

DefaultComboBoxModel favourites = new DefaultComboBoxModel();
favourites.addElement("Favourites");
favourites.addElement("-0.21 + 0.77");
favourites.addElement("-0.16 + -0.89");
jcb = new JComboBox(favourites);
Run Code Online (Sandbox Code Playgroud)

在其他GUI方法调用中

favourites.addElement("10 + 4");
Run Code Online (Sandbox Code Playgroud)