0

我在使用 JComboBox 的 setSelectedItem 方法时遇到问题。它只是不工作。这是我的代码;我的 Station 和 Division 课程还可以。所以它们不包括在内。无论我尝试什么,我都无法在 ComboBox 中将项目设置为选中;

//ListItem Class

public class ListItem {
private String id;
private String value;

public ListItem()
{

    id = "";
    value = "";
}
public ListItem(String id, String value)
{

    this.id = id;
    this.value = value;

}

public String getID(){return this.id;}
public String getValue() { return this.value;}

public void setID(String id ){this.id = id;}
public void setValue(String value) {this.value = value;}
@Override
public String toString()
{
    return value;
}


//show station
private void showSelectedStation(String stationCode){


    stationDA = new StationDA();
    station = stationDA.getStationByCode(stationCode);

    //Assign values to Division fields
    jtxtStationCode.setText(Integer.toString(station.getStationCode()));
    jtxtStationName.setText(station.getStationName());


    divisionDA = new DivisionDA();
    division = divisionDA.getDivisionByCode(station.getDivisionCode());



    ListItem myItem = new ListItem(
    division.getDivisionCode(), division.getDivisionName());


    jcbDivisionName.setSelectedItem(myItem); //not working.Only the first Value in the     list is showing


}
4

2 回答 2

1
ListItem myItem = new ListItem(
division.getDivisionCode(), division.getDivisionName());
jcbDivisionName.setSelectedItem(myItem); 

您正在使用自定义对象。您需要实现 equals() 方法才能使组合框选择正确的项目。

于 2013-06-13T18:27:18.417 回答
1

ListItem 必须实现该equals方法JComboBox才能匹配项目。

就像是:

public class ListItem {
    //your code

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

        ListItem other= (ListItem) obj;
        if (this.name.equals(other.name)) 
            return true;

        return false;
    }
}

假设您有名称字段。只需比较您想比较的任何内容。

于 2013-06-13T18:32:23.543 回答