Yes, this is what I had in mind. Your list model will now contain these contact objects that contain all of the info for the contact. When you select the entry in the list, your list selection model will allow you to get the selected item, which, if you parameterize your list model properly, will automatically be a Contact object. You can always make a list/combo box hold any kind of object you want to, and as I mentioned before, if you override the toString() method for the Contact object, you can have your list display anything you want. For example,
I would also parameterize my list model:
That ensures type safety, (you can only add Contact objects to the list model) and when you work with a list selection object, you know you're dealing with a Contact object and don't have to do any casting.