首先查看How to Use Combo Boxes,尤其是Providing a Custom Renderer
基本上,您想定义将包含在组合框中的对象...
public class MyObject {
private String name;
private int value;
public MyObject(String name, int value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public int getValue() {
return value;
}
}
然后创建一个知道如何渲染它的自定义ListCellRenderer...
public class MyObjectListCellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
if (value instanceof MyObject) {
value = ((MyObject)value).getName();
}
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
return this;
}
}
然后填充组合框并应用单元格渲染器...
JComboBox box = new JComboBox();
box.addItem(new MyObject(..., ...));
//...
box.setRenderer(new MyObjectListCellRenderer());
同样,您可以覆盖对象的 toString 方法,但出于显示目的,我倾向于避免这样做,因为我喜欢 toString 方法来提供有关对象的诊断信息,但这就是我