如何在JComboBox中添加对象,如果直接将对象加入进去,则只会看到该对象的toString()方法输出的内容。如:
则会在组合条目中会显示为如下图所示:
要如何才能将对象加入到JComboBox中呢?
先来看一个eclipse中的对字体设置颜色的选择组合选项示意图:
可以看出该下拉列表中每个选项是由前面的颜色显示面板和后面的文字组成,整个选项对象实际上是一个JPanel对象。
通过查看JComboBox 的 API看到 有这个一个方法: void
setRenderer(ListCellRenderer aRenderer)
解释其功能为:
设置渲染器,该渲染器用于绘制列表项和从 JComboBox 字段的列表中选择的项。该渲染器在 JComboBox 不可编辑时使用。如果其可编辑,则使用编辑器呈现和编辑所选项。
默认渲染器显示字符串或图标。其他渲染器可处理图形图像和复合选项。
要显示所选项,请调用 aRenderer.getListCellRendererComponent
,其中传递列表对象和索引 -1。
可以看到默认的渲染器为字符串和图标,所以我们直接加入对象时只能显示出对象的toString()方法返回的内容。
要实现正确的添加对象,就必须调用该方法,设置渲染器。
继承JListCellRenderer 实现自己的CellRenderer类:
自定义的下拉列表选项对象:
测试类程序:
效果图如下:
这样就实现了在JComboBox中添加对象的功能。