2014-12-21 3 views
0

У меня есть сводка с списком авторов и с изменением в combobox. Мне нужно показать детали автора в таблице, используя java swing. Я сделал, как:показать 1-е и 2-е значения объекта в comboBox

for(Author author: Application.authors){ 
    jComboBoxAuthors.addItem(author); 
} 

и с изменением пункта отмеченными:

if(jComboBoxAuthors.getSelectedIndex()>0){ 
    Author author = (Author)e.getItem(); 
    String name = author.getFirstName()+" "+author.getLastName(); 
} 

Он показывает объект в комбо, но мне нужно только, и если я dojComboBoxAuthors.addItem(author.getFirstName()); я не могу получить значение в таблице, т.е. имя , имя не возвращает ничего. Как я могу исправить эту проблему?

+2

Используйте [* Custom Renderer *] (http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer), для [example] (http: // stackoverflow .com/а/10951919/230513). – trashgod

+0

Я думаю, вам может понравиться [Как использовать комбо-боксы] (http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html) и [Написание пользовательских ячеек Renderer] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#renderer) – MadProgrammer

ответ

0

Использование пользовательского средства визуализации приведет к поломке функциональности JComboBox по умолчанию. То есть вы больше не сможете выбирать элемент с помощью клавиатуры.

Отъезд Combo Box With Custom Renderer для получения дополнительной информации и более полного решения, которое показывает, как исправить эту проблему.

0

Одна вещь, которую вы можете сделать, это переопределить метод ToString() следующим образом

@Override 
    public String toString() { 
     return firstName+" "+lastName; // so that name will be displayed instead of default object 
    } 

Но он имеет свои ограничения. Надеюсь, это поможет

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