我有一个 JList 将根据用户指向选定的 JList。它就像一个监视器,将监视选定的 JList。当我实现自定义单元格渲染器并以编程方式执行类似this.list = getSelectedList()
的操作时,单元格渲染器不会对信息的这种突然变化做出反应。如何通知 JList 重新评估其列表数据而无需调用添加/删除函数?
问问题
518 次
2 回答
3
从我收集的问题下方的评论中,您有一个列表 A 应该显示另一个列表的内容。A 列表应该显示用户选择的列表的内容,当用户更改“选定列表”时,您会遇到问题。
您可以共享实例的ListModel
背后。JList
所以你可以有类似的东西
public void selectionChanged( JList selectedList ){
//update the model of this.list to match the model of selectedList
this.list.setModel( selectedList.getModel() );
}
于 2012-04-21T09:31:38.647 回答
2
this.list = getSelectedList()
影响该字段的另一个 JList 对象this.list
。如果this.list
在执行此行之前将自定义渲染器设置为,则将渲染器设置在另一个 JList 对象上,并且渲染器无法神奇地附加到新的选定列表。
你混淆了变量和对象。当您在对象上调用方法时,您正在修改变量指向的对象,而不是变量本身。如果要将相同的单元格渲染器附加到新选择的 JList,则需要以下代码:
ListCellRenderer renderer = this.list.getCellRenderer();
this.list = getSelectedList();
this.list.setCellRenderer(renderer);
于 2012-04-21T09:28:32.530 回答