默认情况下,JComboBox使用渲染器,而使用toString()方法显示对象数据.因此,您可以创建自己的渲染类以自定义视图.
这就是它的设计方式.
proveedorCombo.setRenderer( new DefaultListCellRenderer(){
@Override
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus)
{
super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
if(value != null){
Proveedor proveedor = (Proveedor)value;
setText( proveedor.getName());
}
return this;
}
});
另一种骇人听闻的方法是从Proveedor覆盖toString()或使适配器类使用您的toString(),但此解决方案不像其他解决方案那么灵活.
public class Proveedor {
//in some part
@Override
public String toString(){
return this.nombre;
}
}
如果要从零开始填充,请在组合框中.
proveedorCombo.setModel(new DefaultComboBox(new Vector(dao.getAll())));
或者,如果您有以前的数据并且想要维护.
for(Proveedor p : dao.getAll){
proveedorCombo.addItem(p);
}