2013-06-08 4 views
0

У меня есть эта частная пустота, которая обрабатывает входящие лица. Их ищут по дням рождения. День рождения человека, которого я нахожу, я добавляю его имя и номер в JComboBox.Как прочитать уникальный идентификатор 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, когда из добавленных элементов в поле со списком?

Thanx за помощь

ответ

1

Вы можете переопределить метод toString() в своем классе person, а затем добавить объекты Person непосредственно в поле со списком. затем, когда вы извлекаете выбранный элемент, вы бросаете объект в 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() для получения идентификатора.

+0

Thanx man! Я собираюсь экспериментировать с этим! – user2445977

+0

Не рекомендуется использовать метод toString объекта для одного варианта использования. Вы должны поставлять ListCellRenderer для поля со списком для настройки представления для этого варианта использования и отвечать на проверку свойств Person выбранного объекта при изменении выбора – MadProgrammer

+0

@MadProgrammer. Вы абсолютно правы. Я добавляю этот комментарий, чтобы побудить любого, кто ссылается на это в будущем, на поставку ListCellRenderer. –

1

Вы не должны (и не может, если вы разобрать строку) читать идентификаторы из JComboBox, вместо этого вы должны прочитать его непосредственно из списка лиц, так же, как вы делали в коде вы отправили.

Смежные вопросы