Fil*_*owk 5 java swing jcombobox
我有一个带有ID,Name,Lastname的Proveedores类,我希望将这个对象添加到组合框中.
ListIterator listaNombre = listaProveedores.listIterator();
listado = new Proveedores[listaProveedores.size()];
int cont = 0;
while (listaNombre.hasNext()) {
prov = (Proveedores) listaNombre.next();
listado[cont] = prov;
cont++;
}
this.vista.cArticuloFamilia.setModel(new javax.swing.DefaultComboBoxModel(listado));
Run Code Online (Sandbox Code Playgroud)
使用此代码,我将不同的对象添加到组合框中.有用.但是现在我想为show only Name属性覆盖toString方法.现在,combobox向我展示了名称类(Proveedores)和ID.
entidades.Proveedores[idProveedores=1]
Run Code Online (Sandbox Code Playgroud)
如何覆盖它以显示Proveedores名称?
谢谢.
Java使用toString()来获取Object的String表示形式,默认情况下它将返回完全限定的classname @,后跟对象的hashCode.
使用ListCellRenderer在ComboBox中显示Proveedores Name.
示例代码:
public static class ProveedoresRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) {
Object item = value;
// if the item to be rendered is Proveedores then display it's Name
if( item instanceof Proveedores ) {
item = ( ( Proveedores ) item ).getName();
}
return super.getListCellRendererComponent( list, item, index, isSelected, cellHasFocus);
}
}
Run Code Online (Sandbox Code Playgroud)
然后将ProveedoresRenderer设置为JComboBox.
ListIterator listaNombre = listaProveedores.listIterator();
listado = new Proveedores[listaProveedores.size()];
int cont = 0;
while (listaNombre.hasNext()) {
prov = (Proveedores) listaNombre.next();
listado[cont] = prov;
cont++;
}
this.vista.cArticuloFamilia.setModel(new javax.swing.DefaultComboBoxModel(listado));
// Set custom renderer to the combobox
this.vista.cArticuloFamilia.setRenderer( new ProveedoresRenderer() );
Run Code Online (Sandbox Code Playgroud)