我为自己的聊天应用实现了自己的ListCellRenderer。我使用JList列出所有用户。单元格渲染器主要由一个图标组成,该图标显示特定用户当前是在线还是离线以及他/她的名字。该列表由DefaultListModel控制,我用它来为JList提供必要的信息。
但是当列表模型确实改变其状态(例如用户离线)时,似乎不会调用列表单元格渲染器?
有人知道如何解决这个问题吗?试图在JList实例上调用updateUI(),但没有帮助。
非常感谢提前!
答案 0 :(得分:4)
单元格渲染器可能正常工作。什么是无效的是ListModel。 DefaultListModel
未检测到模型对象内部状态的更改。您需要在列表模型上调用fireContentsChanged
。您可能需要向模型对象添加侦听器,甚至可能需要扩展DefaultListModel
;因为我没有看到它的代码我不知道你的样子。
你不应该只是使用名称听起来不错的随机方法(updateUI
做一些非常不同的事情)。