我看到,如果我的模型扩展了AbstractListModel,我可以在排序后直接调用fireContentsChanged,但是按照我处理DefaultListModel类的方式,我不能调用它的fireContentsChanged,因为它有受保护的访问权限。我必须扩展AbstractListModel吗?或者有没有办法调用DefaultListModel fireContentsChanged?
public class DefaultDataModel implements DataModel
{
private DefaultListModel<Data> dataModel = new DefaultListModel<>();
@Override
public void addElement(Data data) {
dataModel.addElement(data);
}
@Override
public int getSize() {
return dataModel.getSize();
}
@Override
public Data getElementAt(int idx) {
return dataModel.getElementAt(idx);
}
@Override
public void addListDataListener(ListDataListener l) {
dataModel.addListDataListener(l);
}
@Override
public int indexOf(Data data) {
return dataModel.indexOf(data);
}
@Override
public List<Data> getAllData() {
return Collections.list(dataModel.elements());
}
@Override
public void sort() {
Collections.sort(getAllData());
}
}发布于 2012-11-20 15:12:30
我在sort方法中找到了如何做到这一点,我必须从dataModel listeners列表中调用contentsChanged方法。
@Override
public void sort() {
Collections.sort(getAllData());
ListDataListener[] listeners = dataModel.getListDataListeners();
for(ListDataListener listener : listener) {
listener.contentsChanged(dataModel, ListDataEvent.CONTENTS_CHANGED, 0, getSize());
}
}https://stackoverflow.com/questions/13462118
复制相似问题