我想在Swing中添加一個JComboBox
,這很簡單,但我想爲組合中的每個項目分配值。我有以下代碼在java中爲組合框分配鍵
JComboBox jc1= new JComboBox();
jc1.addItem("a");
jc1.addItem("b");
jc1.addItem("c");
現在我想的是,當點擊組合框它應該返回1,2和3相應 而不是A,B,C。 有沒有辦法爲組合框中的每個項目分配鍵值?
我想在Swing中添加一個JComboBox
,這很簡單,但我想爲組合中的每個項目分配值。我有以下代碼在java中爲組合框分配鍵
JComboBox jc1= new JComboBox();
jc1.addItem("a");
jc1.addItem("b");
jc1.addItem("c");
現在我想的是,當點擊組合框它應該返回1,2和3相應 而不是A,B,C。 有沒有辦法爲組合框中的每個項目分配鍵值?
更多信息,您可以添加項目作爲對象,而不是添加字符串是這樣的:
JComboBox<ItemClass> jc = new JComboBox<ItemClass>();
jc.addItem(item1);
jc.addItem(item2);
jc.addItem(item3);
所以要返回鍵,事件的功能是:jc.getSelectedItem().getKey
通過這種方式,您必須重寫類ItemClass的toString()
函數以返回要在組合框中顯示的字符串。
順便說一句,退貨數量,您可以嘗試:jc.getSelectedIndex()
,它會在一個簡單的類返回索引你的字符串(0 1 2
爲"a" "b" "c"
)
JComboBox不是泛型類。所以你不能直接使用上面的代碼。相反,您需要定義一個自定義的ComboBoxModel並將其設置爲JComboBox對象。 – mhshams
它仍然是JDK 1.7 .... http://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html –
但如何以及在哪裏我必須分配密鑰 –
包裝你的數據:
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表現出最佳實踐。現在,您可以通過jc.getSelectedItem()獲取所選對象。它始終是輸入MyData,您可以訪問文本(「a」,「b」等)和值(1,2,3等)
a,b&c可以表示爲1 ,'JComboBox.getSelectedIndex()+ 1'的2&3。 –