2010-01-19 25 views
6

我有一個表中包含兩個字段如何將JComboBox項目映射到其相應的ID?

  • ID

我已填充的JComboBox「COMBO1」與存儲在數據庫中的所有名稱的數據庫。現在我希望每當用戶選擇「組合1」的項目時,我都能識別所選項目的「ID」。

但問題是,名稱可以在表中複製。因此,假設一張桌子有3個重複的名字,那麼

Q1。如何顯示「combo1」中的項目,以便用戶可以區分這些常用名稱? Q2302。在用戶點擊某個項目後,如果所選項目具有重複內容,如何識別用戶點擊了哪個項目?

回答

10

使用一個類來存儲你的數據對。 JComboBox將使用其toString()方法作爲標籤。

public class Item 
{ 
    int id; 
    String name; 

    public String toString() 
    { 
     return this.name+"("+id+")"; 
    } 
} 
(...) 
Item array[]=new Item[]{ ... };//fill the array with your items 
JComboBox c=new JComboBox(array); 
(...) 
//use the combo 
(...) 
Item selected=(Item)c.getSelectedItem(); 
System.err.println("id is "+selected.id); 
2

如果你得到所有的id/name組合,爲什麼不把它們放在一起呢?那麼你可以使用從JComboBox返回的對象來獲得ID。

如:

class NameIDObj{ 

int id; 
String name; 

NameIDObj(int id, String name){ 
this.id = id; 
this.name = name; 
} 

public String toString(){ 
return name+" ("+id+")"; 
} 


} 
1

JComboBox將一個Object []作爲其值。我並不完全確定,但是您可以嘗試創建自己的類,該類中每個JComboBox項都有一個名稱和一個ID,並嘗試將這些自定義對象的數組傳遞給JComboBox。

相關問題