在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等)