我有一个JList,它将根据用户指向选定的JList。它就像一个监视器,它将监视所选的JList。当我实现自定义单元格渲染器并以编程方式执行this.list = getSelectedList()
之类的操作时,单元格渲染器不会对此突然的信息更改做出反应。如何通知JList重新评估其列表数据而无需调用添加/删除功能?
答案 0 :(得分: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() );
}
答案 1 :(得分:2)
this.list = getSelectedList()
会影响this.list
字段的另一个JList对象。如果在执行此行之前将自定义渲染器设置为this.list
,则可以在另一个JList对象上设置渲染器,并且渲染器无法神奇地附加到新选定列表。
你混淆了变量和对象。当您在对象上调用方法时,您正在修改变量指向的对象,而不是变量本身。如果要将相同的单元格渲染器附加到新选择的JList,则需要以下代码:
ListCellRenderer renderer = this.list.getCellRenderer();
this.list = getSelectedList();
this.list.setCellRenderer(renderer);