0

我有一个 JList 将根据用户指向选定的 JList。它就像一个监视器,将监视选定的 JList。当我实现自定义单元格渲染器并以编程方式执行类似this.list = getSelectedList()的操作时,单元格渲染器不会对信息的这种突然变化做出反应。如何通知 JList 重新评估其列表数据而无需调用添加/删除函数?

4

2 回答 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 回答