Change toString () method of JComboBox Swing

I have a Proveedores class with ID, Name, Lastname, and I want to add this object to the combo box.

      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));

With this code, I add differents objects to combobox. It works. But now I want to override the toString method to display only the Name attribute. Now combobox shows me the name class (Proveedores) and identifier.

entidades.Proveedores[idProveedores=1]

How can I override it to show the name Proveedores?

Thank.

+5
source share
2 answers

Use ListCellRenderer custom ListCellRenderer .

toString() GUI . , .

+9

Java toString(), String , @, hashCode .

ListCellRenderer Proveedores ComboBox.

:

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 Name
        if( item instanceof Proveedores ) {
            item = ( ( Proveedores ) item ).getName();
        }
        return super.getListCellRendererComponent( list, item, index, isSelected, cellHasFocus);
    }
}

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() );
+6

All Articles