将对象添加到JComboBox但显示字符串而不覆盖对象的.toString()方法

时间:2014-08-21 17:27:26

标签: java swing jcombobox tostring

我正在使用的对象类已经覆盖了.toString()方法,并给出了它的名称。但是我在JComboBox中使用相同的对象,我需要显示另一个String。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:4)

你打赌有!你想要做的是给你的JComboBox一个自定义的单元格渲染器。

为此,您可以扩展DefaultListCellRenderer,确保覆盖其getListCellRendererComponent(...)方法。完成此操作后,您可以在JComboBox上调用setRenderer(...),传入新类的对象。

有关详情,请务必查看renderer section of the JComboBox tutorial

答案 1 :(得分:3)

结帐Combo Box With Custom Renderer

如果您只使用自定义渲染器,则会破坏组合框的默认功能,允许用户使用键盘选择项目。使用GUI时,用户应该能够使用鼠标或键盘。

上述解决方案显示了如何实现KeySelectionManager,以便保留此默认功能。