我有一个带有一组对象的车辆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
了解问题所在。请帮忙。
答案 0 :(得分:0)
为.setSelectedIndex代码分支添加输出。似乎永远不会被召唤。
无论哪种 (a)用字符串替换所有部分(用于调试目的)或 (b)在Part类中实现equals + hashCode方法。在这两种情况下,您都应该使用.equals()调用替换==。