Java Swing:扩展DefaultComboBoxModel并覆盖方法

时间:2010-01-11 13:36:28

标签: java swing

我正在使用DefaultComboBoxModel来显示JComboBox中的客户列表。该列表目前仅显示其名称。我还希望在DefaultComboBoxModel中引用每个客户,以便在选择名称时,它还包含对真实客户对象的引用。

为实现这一点,我怀疑我必须扩展DefaultComboBoxModel并可能覆盖addElement()方法?或者我可以添加一个新方法,也可以存储我对客户的引用?如果是这样,我是否必须查看DefaultComboBoxModel的源代码以了解它如何存储元素?对不起,如果这个问题令人困惑,但我无法弄清楚如何以正确的方式做到这一点。谢谢你的阅读。

1 个答案:

答案 0 :(得分:6)

如果您在Customer对象中覆盖toString()以返回您想要在JComboBox中呈现的内容,它将正常工作。如果您将toString用于其他目的,则需要覆盖模型或渲染器以使用Customer对象中的正确字段。

- 更新汤姆的建议 - 创建一个新对象CustomerView,它包装真实的客户对象,因此可以提供对它的引用,但也会覆盖toString()以返回客户的名称。

相关问题