Java swing:为JComboBox实现我的Comboboxmodel

我需要我的combobox才能拥有组织的简称。 问题是我可以在下拉列表中看到组织名称,但实际上无法选择它。 我的错误在哪里?

public class ToComboBoxModel extends AbstractListModel implements ComboBoxModel { private String selectedItem; private List orgs; public ToComboBoxModel(List orgs) { this.orgs = orgs; } @Override public String getSelectedItem() { return selectedItem; } @Override public void setSelectedItem(Object newValue) { for (Organization o: orgs){ if (newValue==o){ selectedItem=o.getShortName(); break; } } } @Override public int getSize() { return orgs.size(); } @Override public String getElementAt(int i) { return orgs.get(i).getShortName(); } } 

设定型号:

 query =session.createQuery("from Organization where isMain = 0"); List orgs=query.list(); toComboBox.setModel(new ToComboBoxModel(orgs)); 

提前致谢!

我怀疑你的setSelectedItem()方法使用==而不是.equals()来比较对象

考虑使用已经实现有用方法的DefaultComboBoxModel 。

编辑 :同样根据文档,您应该在调用setSelected时调用所有已注册的ListDataListener对象。

使用DefaultComboBoxModel非常简单。 您创建一个新的DefaultComboBoxModel添加您想要包含的元素,然后调用getSelectedItem()来检索当前选定的元素。