2011-07-12 72 views
1

我試圖讓位置(作爲INT)的選擇對象位置,生成組合框和富人這樣入門的JComboBox對象的JComboBox

for (int d=0; d<i; d++) 
     { 
      titulos.addItem(listaPraBox[d]); 
     } 

    ActionListener comboListener = new ActionListener() { 
      public void actionPerformed(ActionEvent actionEvent) { 
      ItemSelectable is =(ItemSelectable)actionEvent.getSource();  
      objectoseleccionado = selectedString(is); 
      DeskMetodos.listaTexto(objectoseleccionado);   
      } 
     }; 
    titulos.addActionListener(comboListener); 

的動作偵聽器執行

static private String selectedString(ItemSelectable is) { 
    Object selected[] = is.getSelectedObjects(); 

    return ((selected.length == 0) ? "null" : (String)selected[0]); 
    } 

但我希望所選對象的位置通過該int從另一個數組獲取字符串。

這甚至可能嗎?通過我所做的搜索,甚至沒有提到這一點。

回答

5

JComboBox定義getSelectedIndex()。該實現只是將數據模型與getSelectedItem()進行循環檢查。

這並沒有達到ItemSelectable,但數據模型本身也沒有,所以你可能需要使用具體的類。

+0

你能向我解釋具體的課嗎?不太明白這是什麼意思。 在eclipse中,它給了我關閉添加選項(Component comp,Index int)。該組件可以是數組的x位置的字符串嗎? – Lucky

+0

「具體類」,我的意思是你可能需要在你的監聽器代碼中使用'JComboBox'而不是'ItemSelectable'。對於JComboBox, –

+0

會更好看ItemListener,+1 – mKorbel

1

不是將項目存儲在組合框中,而是必須使用索引來引用另一個值的數組。只需在ComboBox中存儲一個對象,該對象的toString()輸出與您當前顯示的值匹配並直接引用數組中的對象。這樣,任何拉動所選項目或處理COMOBO框的對象都可以拉取他們需要的值,而不必「知道」這個其他數組。

+0

該方法的問題將是重複的名稱(我認爲),這就是爲什麼我需要我的位置。現在明白了。但我感謝你的洞察力。 – Lucky

+0

@Lucky,這將解決重複名稱問題,因爲每個位置都會有一個不同的對象,而不管描述如何都會有正確的值。 – jzd