2013-07-10 35 views
-3

我哈瓦一類StageDAO這樣的:如何從selectedItem獲得JCombox的ID?

public class Stage{ 

    public int stageID; 
    public String label; 

    public Stage(ResultSet rs) { 
      try{ 
       this.stageID=rs.getInt("StageID"); 
       this.label=rs.getString("Label"); 
      } 
      catch(Exception e){} 
    } 
} 

我有一類StageDAO,在這裏我從數據庫中獲取數據的方法,如:

public class StageDAO{ 
Connect connectdb; 

public StageDAO(Connect connectdb){ 
    this.connectdb=connectdb; 
} 

public Vector retrieveAll() { 

    ResultSet lobjRS=null; 
    Vector lobjList=new Vector(); 
    Connection lobjConnection = null; 
    Statement lobjStatement=null;   
    Stage lobjStage = null; 

    try{ 
     lobjConnection = this.connectdb.getConnection(); 
     lobjStatement = lobjConnection.createStatement(); 
     lobjRS = lobjStatement.executeQuery(
      "SELECT * FROM Stage order by sortkey"); 
     while(lobjRS.next()){ 
      lobjStage = new Stage (lobjRS); 
      lobjList.add(lobjStage);     
     } 
     }catch(){} 
    } 
} 
在我的GUI類

我有這個:

StageDAO lobjStage= new StageDAO (connectdb); 
Vector<Stage> stageList = lobjStage.retrieveAll();//Here i have the information 
of stageID and stagelabel 

private JComboBox lcbstage; 

public void initialize(){ 
    lcbstage= new JComboBox(); 
    for(int i=0; i<stageList .size();i++){ 
    lcbstage.addItem(stageList.get(i).label); 
    } 
} 

但知道如果我選擇在我的桂舞臺,我想知道stageid。 我不知道如何獲得選定的stagelabel的stageid?

謝謝你的幫助。

+3

想要獲得更快的幫助,請發佈[SSCCE](http://sscce.org/)。順便說一句 - '} catch(){}'這甚至不能編譯。請停止用'類似'代碼所浪費的時間。 –

+0

對不起,我不知道這 –

+1

如果你不打算按照建議不要道歉。 –

回答

2

整個項目添加到您的JComboBox,不只是標籤,並創建一個toString()方法將返回只需將標籤:

public String toString(){ 
    return this.label; 
} 

JComboBox's addItem需要一個對象,然後將其轉換爲字符串顯示,所以當你做getSelectedItem()整個對象,idlabel和其他一切,將被返回。

public void initialize(){ 
    lcbstage= new JComboBox(); 
    for(int i=0; i<stageList .size();i++){ 
    lcbstage.addItem(stageList.get(i));//this line changed 
    } 
} 
+0

謝謝,我認爲你的意思是這樣的:lcbstage = new JCombobox(stageList)。但知道我的組合框顯示是這樣的:packagename.Stage –

+0

好吧,我有你喜歡你說的。在它運作良好。但是,如果我想知道ID ...我做lcbstage.getSelectedItem()和我得到的標籤。但我想要stageid –

+0

爲了得到我想做的事,在完成整個項目後執行'lcbstage.getSelectedItem()。id',就像我在上面的代碼中一樣。 –