JComboBox.setSelectedItem不起作用

时间:2015-10-06 22:46:22

标签: java swing jcombobox

我有一个带有一组对象的车辆Part。 我正在使用该集来填充JComboBox,如下所示:

Set<Part> parts = vehicle.getPart();
for(Part part : parts){
 jComboBox.addItem(part);
}

我有另一堂课;使用Part对象进行服务。 我试着

setSelectedItem(service.getPart());

但它不起作用。我也试过这个:

for(int i = 0; i < jComboBox.getItemCount(); i++){
 if(jComboBox.getItemAt(i) == service.getPart()){
  jComboBox.setSelectedIndex(i);
 }
else{
 System.out.println("Needed part is: " + service.getPart());
 System.out.println("Checked part is: " + jComboBox.getItemAt(i));
}

仍然不起作用! 因为toString for Part被覆盖了,所以输出如下:

Needed part is: PartNumber1 / PartData1
Checked part is: PartNumber1 / PartData1


Needed part is: PartNumber1 / PartData1
Checked part is: PartNumber2 / PartData2


Needed part is: PartNumber1 / PartData1
Checked part is: PartNumber3 / PartData3

.equals(service.getPart())

...没有t work either. I don了解问题所在。请帮忙。

1 个答案:

答案 0 :(得分:0)

为.setSelectedIndex代码分支添加输出。似乎永远不会被召唤。

无论哪种 (a)用字符串替换所有部分(用于调试目的)或 (b)在Part类中实现equals + hashCode方法。在这两种情况下,您都应该使用.equals()调用替换==。