style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

HashMap

Hola a todos.
No habia entrado a este foro de Java.
Se puede llenar un JComboBox con un HashMap.

Ejemplo:

HashMap<String,Boolean> guarda = new Hashmap<>();
guarda.put("Activado",true);
guarda.put("Desactivado", true);
guarda.put("Capturado", false);
guarda.put("Buscado",false);
guarda.put("Eliminado", true);
JComboBox<HashMap<String, Boolean>> combo;
combo = new JComboBox<>();
guarda.stream().forEach((valor, valor2) -> {
     combo.addItem(valor);
});

Cuando trato de llenar el combo me marca un error:

The method addItem(Hashmap<String,Boolean>) in the type JComboBox<HashMaps<String,Boolean>> is not applicable for arguments(Boolean)

Es que quiero al momento de seleccionar en el combo el valor de Activado, me devuelva el valor boleano.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

usa el tipo de dato primitivo

Prueba cambiar el Boolean por boolean (en minúsculas) para que uses el primitivo en lugar del objeto.

Necesitas un holder para cada

 

Necesitas un holder para cada elemento del JComboBox, es decir, una clase para guardar la etiqueta y el valor. El método toString de esta clase se utiliza para mostrar el texto. Ejemplo:

static class LabelValue<T> {

    private String label;
    private T value;

    public LabelValue(String label, T value) {
        this.label = label;
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    @Override
    public String toString() {
        return label;
    }
}

public static void main(String[] args) {
    Map<String, Boolean> map = new HashMap<>();
    map.put("Activado", true);
    map.put("Desactivado", true);
    map.put("Capturado", false);
    map.put("Buscado", false);
    map.put("Eliminado", true);
    JComboBox<LabelValue<Boolean>> comboBox = new JComboBox<>();
    map.forEach((String label, Boolean value)
            -> comboBox.addItem(new LabelValue<>(label, value))
    );
    JOptionPane.showMessageDialog(null, comboBox);
    LabelValue<Boolean> item = comboBox.getItemAt(comboBox.getSelectedIndex());
    System.out.printf("%s : %s", item, item.getValue());
}

~~~

El mensaje de error es porque

El mensaje de error es porque estás queriendo guardar un boleano en un combo que declaraste sería de tipo HashMap, luego entonces el mensaje es: "Al método addItem que recibe un HashMap le estás pasando un booleano"

Lo que puedes hacer es llenar el combo con las llaves y cuando quieras saber el valor lo buscas de nuevo en el mapa.

        Map<String,Boolean> map = new HashMap<>();
        map.put("activado", true);
        map.put("desactivado", false);
        ....
        JComboBox<String> combo = new JComboBox<>();
        map.forEach((key,value) -> combo.addItem(key));

Y luego cuando necesites usar el valor lo obtienes con la llave:

        boolean value = map.get(combo.getItemAt(combo.getSelectedIndex()));

Te agradezco mucho jpaul

Fue muy ilustrativa tu respuesta, y se soluciono el error.
Muchisimas gracias

Muchas gracias Oscar.

Me diste una excelente respuesta al problema que tenia.
Es que no sabía que hacer al momento de llenar el combo.
Claro también estaba declarando mal la variable del combo.

Pero funciona a la perfección y es lo que queria hacer.
Mil gracias, que tengas una excelente fin de semana.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">