setSelectedItem de un JComboBox Java DefaultComboBoxModel


Seleccionar un dato de un JComboBox es muy fácil, sobre todo si llenaste con addItem, pero el problema surge que si lo llenaste desde el modelo DefaultComboBoxModel a partir de una clase.


El procedimiento es lógico, así como llenamos el JComboBox de acuerdo al modelo de una clase, también de esa forma debemos de seleccionarlo.

Siguiendo la estructura anterior pondré de nuevo el ejemplo y luego pasamos al setSelectedItem.

La Clase DepartamentoVO:

public class DepartamentoVO {
    
    private int idDepartamento;
    private String departamento;
    
    public DepartamentoVO(){}
    
    public DepartamentoVO(int id, String nombre){
        this.idDepartamento = id;
        this.departamento = nombre;
    }

    public int getIdDepartamento() {
        return idDepartamento;
    }

    public void setIdDepartamento(int idDepartamento) {
        this.idDepartamento = idDepartamento;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }
    
    public String toString(){
        return this.departamento;
    }
    
}


Llenamos de datos al Combo, que creamos en el JFrame:

public Ver_Combo() {
        initComponents();
        
        DefaultComboBoxModel value = new DefaultComboBoxModel();
        jComboBox1.setModel(value);
        
        value.addElement(new DepartamentoVO(1, "Lima"));
        value.addElement(new DepartamentoVO(5, "Amazonas"));
        value.addElement(new DepartamentoVO(2, "Arequipa"));
    }

Ya tenemos listo el JComboBox llenado de datos, ahora le agregamos el siguiente método:

public void setSelectedValue(JComboBox comboBox, String value)
    {
        DepartamentoVO item;
        for (int i = 0; i < comboBox.getItemCount(); i++)
        {
            item = (DepartamentoVO)comboBox.getItemAt(i);
            if (item.getDepartamento().equalsIgnoreCase(value))
            {
                comboBox.setSelectedIndex(i);
                break;
            }
        }
    }

En este método empezamos creando un objeto del tipo departamento, en el for contamos la cantidad de elementos del combo, en el if comparamos el tipo de dato DepartamentoVO seleccionado y lo comparamos con value que es el dato proporcionado por nosotros, al igual que comboBox.

Lo que hice fue agregar un botón y caja de texto al JFrame que nos servirá para mostrar su funcionamiento.
setSelectedItem de un JComboBox Java

En el evento del botón llamamos al método setSelectedValue;

String value = jTextField1.getText();
setSelectedValue(jComboBox1,value);

Y vemos que selecciona según el dato que lo asignamos, sin en caso el dato fuera del tipo int, solo hay que modificar el value por dato del tipo int.

DefaultComboBoxModel  setSelectedItem de un JComboBox Java


Comentarios

  1. Hola, buena noche.
    Tu código me ha servido de mucho, salvo por un caso que encontré, y es que una vez que selecciona el registro deseado con su índice, ya no me muestra el resto de opciones en el combobox.
    Solo quería saber si ese es tu planteamiento con esta solución, ya que yo necesito que se muestre el índice seleccionado, y en caso de desear cambiar a otro se pueda realizar mostrando las demás opciones.

    Gracias, saludos.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Convertir jar a ejecutable exe con Launch4j

Librería para cambiar apariencia ventana y frames Java

Component mscomctl.ocx or one of its dependencies not correctly registered