gpt4 book ai didi

Java Swing : implementing my Comboboxmodel for JComboBox

转载 作者:行者123 更新时间:2023-12-01 17:33:55 25 4
gpt4 key购买 nike

我需要我的组合框包含组织的简称。问题是我可以在下拉列表中看到组织名称,但无法实际选择它。我的错误在哪里?

public class ToComboBoxModel extends AbstractListModel implements ComboBoxModel {
private String selectedItem;

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

关于Java Swing : implementing my Comboboxmodel for JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com