我有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;
}
}
答案 0 :(得分:3)
现在我从数据库中检索数据,并希望在Jcombox中设置值。
它显示了如何在不使用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;