我遇到了JComboBox的setSelectedItem方法的问题。它只是不工作。这是我的代码;我的车站和分部课程还可以。所以它们不包括在内。 无论我尝试什么,我都无法在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
}
答案 0 :(得分:1)
ListItem myItem = new ListItem(
division.getDivisionCode(), division.getDivisionName());
jcbDivisionName.setSelectedItem(myItem);
您正在使用自定义对象。您需要实现equals()方法,以便comboBox选择正确的项目。
答案 1 :(得分: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;
}
}
假设您有名称字段。只需比较你想要比较的内容。