gpt4 book ai didi

java jlist - AbstractListModel - fireContentsChanged 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 18:49:27 25 4
gpt4 key购买 nike

我有一个简单的ListModel,它是可过滤的并在JList中使用...

它使用以下代码...

public class FilteredListModel extends AbstractListModel
{
private List<LineData> data = null;
private final ArrayList<Integer> indices = new ArrayList<Integer>();

public FilteredListModel()
{
}

public void setData(List<LineData> data)
{
this.data = data;
doFilter();
}

public void doFilter()
{
int oldSize = indices.size();
indices.clear();

if (data != null)
{
int count = data.size();
for (int i = 0; i < count; i++)
{
IFiltererListObject element = (IFiltererListObject) data.get(i);
if (element.isVisible())
indices.add(i);
}
}
fireContentsChanged(this, 0, getSize() - 1);
if (oldSize > getSize())
fireIntervalRemoved(this, getSize(), oldSize - 1);
}

@Override
public int getSize()
{
return indices.size();
}

@Override
public Object getElementAt(int index)
{
return data.get(indices.get(index));
}

@Override
public void addListDataListener(ListDataListener l)
{
// TODO Auto-generated method stub
//doFilter();
}

@Override
public void removeListDataListener(ListDataListener l)
{
// TODO Auto-generated method stub
//doFilter();
}
}

奇怪的是,它不起作用,例如,如果我在窗口外单击,带有 ListModelJList 就会正确更新。 .

我在这里缺少什么?

最佳答案

问题在于 addListDataListenerremoveListDataListener 方法为空。这意味着 JList 无法再将其监听器附加到模型。调用 fireContentsChanged 不会执行任何操作,因为父类(super class)不知道任何监听器。

不要重写这些方法,或者确保也调用 super.addListDataListener

关于java jlist - AbstractListModel - fireContentsChanged 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com