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()
来检索当前选定的元素。