gpt4 book ai didi

java - JComboBox 设置 selectedItem 不起作用

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

我正在用 Java 构建一个 swing 应用程序。我有一个包含项目列表的 JComboBox。之后,我想要设置此 JComboBox 的选定项目,但我无法执行此操作。

这是我用来在 JComboBox 中添加 Item 的代码:

List<Stagione> listaStagioni = modelManager.getStagioneManager().getAllStagioni(null, null);
ComboFormat comboStagione = new ComboFormat();
comboStagione.setModel(new javax.swing.DefaultComboBoxModel(listaStagioni.toArray()));
comboStagione.addItem("");
comboStagione.setSelectedIndex(listaStagioni.size());

这是 Stagione 类:

public class Stagione {
private Integer id;
private Integer anno;
private String descrizione;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getAnno() {
return anno;
}
public void setAnno(Integer anno) {
this.anno = anno;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}

public String toString() {
return this.getDescrizione();
}
}

在此代码中,我想从代码中设置 JComboBox 中的项目

comboCategoria.setSelectedItem("MAGLIE");

我没有任何错误,但未选择该项目。这是我的 JComboBox 中的项目 enter image description here

最佳答案

setSelectedItem内部使用equals方法。您添加 Stagione 对象,但在 setSelectItem 中使用字符串。

针对您的情况,最简单的解决方案是重写 Stagion 对象中的 equals 来处理字符串比较。

喜欢:

 @Override
public boolean equals(Object obj) {
if(obj==null){
return false;
}

if(obj instanceof Stagione){
return ((Stagione)obj).getId().equals(getId());
}else if (obj instanceof String){
return descrizione.equals(obj);
}else {
// Or return false...
return super.equals(obj);
}
}

PS:我不太喜欢使用instanceof。比较字符串和业务对象,嗯......从对象的角度来看,在 setSelectedItem 中使用 Stagione 对象会更清晰,但无论如何您都必须实现 equals,例如通过 ID 进行比较。

关于java - JComboBox 设置 selectedItem 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48523206/

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