Search code examples
javaswingenumsjcombobox

JComboBox fill with enum variable value


I have a JComboBox that I made this way, using an enum for its values:

JComboBox<StudyGrade> maxLevelOfStudiesCombo = new JComboBox<StudyGrade>(StudyGrade.values());

The enum looks like this:

public enum StudyGrade {
    ELEMENTARY ("Primaria"),
    MIDDLE ("Secundaria"),
    MIDDLE_HIGH ("Preparatoria"),
    HIGH ("Universidad"),
    MASTERS ("Maestría / Posgrado"),
    DOCTORATE ("Doctorado"),
    POST_DOCTORATE ("Post Doctorado");

    private String studies;

    private StudyGrade(String studies) {
        this.studies = studies;
    }

    public String getStudies() {
        return studies;
    }

    public void setStudies(String studies) {
        this.studies = studies;
    }

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

As you can see I'm overriding the toString() method, so I can have the studies values shown instead of the enum ones...

However I want to show the studies values only in the JComboBox not everytime I use the StudyGrade enum.

How would I change the code, so whenever I use something like:

System.out.println(StudyGrade.HIGH);

I get printed HIGH instead of Universidad, but not for the JComboBox?


Solution

  • I'm overriding the toString() method, so I can have the studies values shown instead of the enum ones...

    I've never used a enum before but I assume you can use it like any custom object added to the combo box so you should be able to use a custom renderer so you can control which data is displayed by the combo box.

    Check out Combo Box With Custom Renderer for more information and a helper class.