将数据库中的值设置为使用枚举填充的Jcombobox

时间:2016-03-16 18:40:01

标签: java swing enums jcombobox

我有JCombobox和枚举类BloodGroup。我使用JComboBox方法填充enum.value()。我保存到数据库A +和A-中的combobox seleted项目。

现在我从数据库中检索数据,并希望在Jcombox中设置值。

检查以下代码并排除cmbGender.setSelectedItem("Value from Database like A+");

import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;


public class ComboxExample extends JFrame
{

public static void main(String[] args )
{
    JComboBox cmbBloodGroup = new JComboBox(BloodGroup.values());

    ComboxExample CE = new ComboxExample();
    CE.setSize(300,200);
    CE.setLayout(new FlowLayout());
    CE.add(cmbBloodGroup);
    CE.setVisible(true);

    cmbBloodGroup.setSelectedItem("Value from Database like F");

}
}


enum BloodGroup
{
    A_Positive("A+"),A_Negative("A-"),
    B_Postive("B+"),B_Negative("B-"),
    O_Postive("O+"),O_Negative("O-"),
    AB_Positive("AB+"),AB_Negative("AB-");

private final String name;

private BloodGroup(String name)
{
    this.name = name;
}

/**
 * @return The string representation of this element in the enumeration.
 */

@Override
public String toString()
{
    return this.name;
    }

}

2 个答案:

答案 0 :(得分:3)

  

现在我从数据库中检索数据,并希望在Jcombox中设置值。

查看Combo Box With Hidden Data

它显示了如何在不使用Enums的情况下执行此操作。基本上,如果您希望能够在组合框中设置值,那么您添加到ComboBoxModel的对象必须实现Expand<T>方法,以便组合框可以找到要选择的对象。

答案 1 :(得分:2)

cmbGender.setSelectedItem(Gender.valueOf("F"));

valueOf会返回enum中的对象(如果存在),否则您将获得IllegalArgumentException例外。

1. Gender.valueOf("F") == Gender.F
2. Gender.valueOf("A") == throwing an exception
public static BloodGroup get(String value) {
    switch (value) {
        case "A+": return A_Positive;
        ...
        default: throw new IllegalArgumentException();
    }
}

结果:

BloodGroup.get("A+") == BloodGroup.A_Positive;