【发布时间】:2013-07-26 12:33:04
【问题描述】:
关于JavaDoc for javax.swing.ListCellRenderer 中示例代码的快速问题:
我有点惊讶,在示例中,ListCellRenderer 是由扩展 JLabel 的类实现的,而 getListCellRendererComponent(...) 方法仅返回 this。看起来当时只有一个 JLabel 的实例,即使对于包含多个元素的列表也是如此。
通常,我希望当setText(...) 方法在getListCellRendererComponent(...) 内为列表中的第二项调用时,它会更改列表中已经存在的第一项的标签。或者,实际上,列表甚至不可能使用相同的JLabel-instance 两次(或多次),列表中的每个项目一次。
现在,我想出了两种可能的方法来解决这个问题,并且想知道哪一种(如果有的话)实际发生了:
-
JList是否以某种方式为每个列表项创建所提供ListCellRenderer的新实例? - 还是它使用
getListCellRendererComponent(...)返回的组件只是在列表的画布上调用其paint(...)方法,而不是实际将此组件添加到某个面板?
【问题讨论】:
-
ListCellRenderer 负责将虚拟绘画装饰到JList,JComboBox,从所有鼠标和按键事件中调用渲染器,具体API中实现的通知器Q:
Does JList somehow ...--->是但答案不是@ 987654336@---> - 是的,仅将虚拟 JComponents 作为 Item 绘制到 JLists 矩形中 -
@mKorbel:现在我很困惑。 ;) “仅将虚拟 JComponents 作为项目绘制到 JLists 矩形中”是我在“或者它是否使用...”中的意思。但是在你写之前的句子中,那个是错误的。 :)
标签: java swing jlist listcellrenderer