所以我用的是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);发布于 2014-03-08 18:31:43
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);在另一个GUI方法调用中
favourites.addElement("10 + 4");发布于 2014-03-08 18:32:43
Swing组件遵循MVC模式,因此您必须修改jcombobox的模型,然后该模型通知已更改的视图。在使用DefaultComboBoxModel时,可以使用addElement通知侦听器,然后更新视图。
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(new String[]{"Favourites","-0.21 + 0.77","-0.16 + -0.89"});
jcb = new JComboBox(model);当事件发生的时候。
model.addElement("something");在如何使用ComboBoxes中阅读更多内容
https://stackoverflow.com/questions/22273311
复制相似问题