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

标签 java swing jlist updating

我有一个简单的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/

相关文章:

java - DropDemo 中的 ListTransferHandler 有一个 bug

java - 允许用户选择 JList 上的多个项目

java - 用于跨字段验证的 hibernate validator

java - Anypoint Studio Maven 在错误的 java 目录中查找 tools.jar

java - 当组合三个字符ക (\u0D15) + ് (\u0D4D) + ര (\u0D30) 时,Unicode 字体不会在 SWING 中呈现,得到 ര്ക 而不是 ക്ര

java - 如何从java中的目录拖放文件

java - Actionlistener 将 Jlist 信息输出到文本区域

java - 安卓录像错误

java - 如何在没有任何 GUI 组件的情况下创建可执行 jar 文件?

Java Swing 条形码创建