2015-05-27 117 views
-1

我想從列表中填充JComboBox,但是我得到的組合爲空。從List中填充JComboBox

代碼有什麼問題?

List<Rank> rank = GetRanks(); 
Vector model = new Vector(); 

for (Rank s : rank) { 
    model.addElement(new Rank(s.getRankId(), s.getRankName())); 
} 
jComboBox1 = new JComboBox(model); 
+0

請重命名爲'getRanks',爲什麼你要使用'Vector'而不是'ArrayList'?而且你正在從現有的Rank中構建一個新的Rank,這對我來說有點奇怪。 – Maroun

+0

考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的混淆和更好的反應 – MadProgrammer

+0

試試![this](http://stackoverflow.com/questions/4642698/liststring-array-in-jcombobox) –

回答

2

什麼是錯的東西,如

DefaultComboBoxModel<Rank> model = new DefaultComboBoxModel<>(); 
for (Rank r : rank) { 
    model.addElement(r); 
} 
jComboBox1 = new JComboBox(model); 

DefaultComboBoxModel<Rank> model = new DefaultComboBoxModel<>(rank.toArray(new Rank[rank.size()]); 
jComboBox1 = new JComboBox(model); 

不要忘記,以確保您添加jComboBox1的東西,是顯示

+0

仍然無法正常工作。我嘗試過(Rank s:rank){jComboBox1.addItem(s.getRankName()); }和工作,但我想在組合中添加標籤和值 –

+2

考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這會減少混淆和更好的反應 – MadProgrammer

0

沒有什麼是錯的用您的代碼快速瀏覽一下:

  1. 無論該列表是空
  2. 某處有問題,你的排名對象
  3. 您不添加新的組合框到頁面

我覺得3可能是最有可能在這裏因爲你正在創建一個新的,然後不做任何事情。您可能想要更改舊版本中的項目,而不是創建新項目。

嘗試在調試器中運行您的程序,並逐步查看您的代碼,看看它在每個步驟中正在執行的操作。