Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Dos campos en el JComboBox

Tengo una duda sobre el JComboBox, es posible que nos muestre el resultado de la tabla categoría en este formato(id - nombre)? Y porque cuando carga al JComboBox solo aparece el nombre?

2 respuestas
solución!

¡Hola José! Gracias por tu pregunta. Sí, es posible mostrar los resultados de la tabla categoría en el formato "id - nombre" en un JComboBox. Para lograr esto, puedes crear una clase que implemente la interfaz ListCellRenderer y sobrescribir el método getListCellRendererComponent. Este método te permitirá personalizar la apariencia de cada elemento en el JComboBox.

Aquí te dejo un ejemplo de cómo podrías hacerlo:

public class CategoriaRenderer extends JLabel implements ListCellRenderer<Categoria> {

    @Override
    public Component getListCellRendererComponent(JList<? extends Categoria> list, Categoria categoria, int index, boolean isSelected, boolean cellHasFocus) {
        if (categoria != null) {
            setText(categoria.getId() + " - " + categoria.getNombre());
        }
        return this;
    }
}

Luego, en tu código donde creas el JComboBox, puedes setear el renderer personalizado de la siguiente manera:

JComboBox<Categoria> comboBox = new JComboBox<>();
comboBox.setRenderer(new CategoriaRenderer());

Con respecto a tu segunda pregunta, el JComboBox muestra solo el nombre por defecto porque el método toString() de la clase que estás agregando al JComboBox devuelve el nombre. Si deseas que se muestre otra información, como el id y el nombre, debes sobrescribir el método toString() en la clase correspondiente.

¡Espero haber ayudado y buenos estudios!

super, muchas gracias por tu respuesta.