【问题标题】:How to get in a JCombox from the selectedItem the id? [closed]如何从 selectedItem 中获取 Combobox 的 id? [关闭]
【发布时间】:2013-07-10 12:58:26
【问题描述】:

我有一个像这样的 StageDAO 类:

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);
    }
}

但是如果我在我的 Gui 中选择舞台,我想知道 stageid。 我不知道如何获取所选 stagelabel 的 stageid ?

感谢您的帮助。

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖 SSCCE。顺便说一句 - }catch(){} 那甚至无法编译。请停止使用“类似”的代码浪费我们的时间。
  • 好吧抱歉,我不知道这个
  • 如果您不打算听从建议,请不要道歉。

标签: java swing awt jcombobox


【解决方案1】:

将整个项目添加到您的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
    }
}

【讨论】:

  • 谢谢,我想你的意思是这样的:lcbstage = new JCombobox(stageList)。但知道我的组合框显示如下:packagename.Stage
  • 好吧,我按照你说的做了。在它运作良好。但是,如果我想知道 id ... 我会执行 lcbstage.getSelectedItem() 并得到标签。但我想要stageid
  • 要得到我想要的,像我在上面的代码中那样放入整个项目后做lcbstage.getSelectedItem().id
  • 对于您的第一条评论,您是否像上面那样实现了 toString?
  • 我没有这个选项。我已经像你说的那样做了。但我只能使用字符串操作。
猜你喜欢
  • 1970-01-01
  • 2015-03-13
  • 2019-07-09
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多