【问题标题】:How to read a unique id from a JComboBox?如何从 JComboBox 中读取唯一 ID?
【发布时间】:2013-06-08 18:30:02
【问题描述】:

我有这个处理来人的私人空白。这些人按他们的生日进行搜索。我找到的人的生日,我将其姓名和号码添加到JComboBox

但是,另一个按钮应该读取所​​选人员的ID。我该怎么做?

String birthday= tfBirthday.getText();
personQuery query = Application.getPersonQuery();
List<Person> persons= query.getPerson(birthday);

for(int i = 0; i < persons.size(); i++){
                Person person = persons.get(i);
                tfcSelectName.addItem(person.getPersonID() + " " + person.getPersonName() + " "+ person.getPersonLastName());
}

如何从组合框中添加的项目中读取 person.getPersonID?

感谢帮助

【问题讨论】:

    标签: java swing jcombobox


    【解决方案1】:

    您可以在您的 person 类中重写 toString() 方法,然后将 Person 对象直接添加到组合框中。然后,当您检索所选项目时,您将对象转换为 Person 并使用该方法获取 id。

    在你的person类中:

    public String toString() {
       return (person.getPersonID() + " " + person.getPersonName() + " "+ person.getPersonLastName()
    }
    

    那么您在问题中添加的代码可以更改为:

    String birthday= tfBirthday.getText();
    personQuery query = Application.getPersonQuery();
    List<Person> persons= query.getPerson(birthday);
    
    for(int i = 0; i < persons.size(); i++){
        tfcSelectName.addItem(persons.get(i));
    }
    

    稍后在你提到的按钮的动作执行代码中,你可以这样做:

    Person selectedPerson = (Person)tfcSelectName.getSelectedItem();
    

    你有 person 对象,你可以调用 person.getPersonID() 来获取 ID。

    【讨论】:

    • 不建议为单个用例更改对象的 toString 方法。您应该为组合框提供 ListCellRenderer 以自定义此用例的视图,并且应该在选择更改时回复检查所选对象的 Person 属性
    • @MadProgrammer 你是绝对正确的。我添加此评论是为了鼓励将来引用此评论的任何人提供 ListCellRenderer。
    【解决方案2】:

    您不应该(也不能,除非您解析字符串)从JComboBox 中读取 ID,而应该直接从人员列表中读取它,就像您在发布的代码中所做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多