在java中为combobox分配键

我想在Swing中添加一个简单的JComboBox ,但我想为组合中的每个项目分配值。 我有以下代码

  JComboBox jc1= new JComboBox(); jc1.addItem("a"); jc1.addItem("b"); jc1.addItem("c"); 

现在我想要的是,当点击combobox时,它应该相应地返回1,2和3而不是a,b,c。 有没有办法为combobox中的每个项目分配键值?

您可以将项目添加为对象,而不是像这样添加String:

 JComboBox jc = new JComboBox(); jc.addItem(item1); jc.addItem(item2); jc.addItem(item3); 

所以要返回键,事件的function是: jc.getSelectedItem().getKey这样做你必须覆盖类ItemClass的toString()函数,以返回你想要在combobox中显示的字符串。

顺便说一句,对于返回号码,您可以尝试: jc.getSelectedIndex() ,它将返回您的字符串索引( 0 1 2表示"a" "b" "c"

您可以创建自己的模型并将其添加到combobox中,而不是直接添加字符串。

检查Java ComboBoxModel 。

你可以在这个post中找到更多信息

将数据包装在一个简单的类中:

 class MyData { int value; String text; ... } 

现在,您可以通过扩展BasicComboBoxRenderer来编写自己的渲染器。 将“值”转换为“MyData”并呈现文本。

 public class Bla extends BasicComboBoxRenderer{ @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value instanceof MyData) { setText(((MyData) value).getText()); } return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); } } 

如果您使用Java7,最好使用@Taiki所示的generics。 现在,您可以通过jc.getSelectedItem()获取所选对象。 它始终来自MyData类型,您可以访问文本(“a”,“b”等)和值(1,2,3等)