0
我有一個JList,我想用自己的ListModel提供它。我有一個包含條目的LinkedHashMap。我分類了AbstractListModel。我想要實現的是每當我從Map中移除一個元素時,我都希望將它反映到JList中(添加或移除元素或更新)。如何使AbstractListModel子類對集合更改做出反應?
EDIT-我試圖這樣做的場景如下:我有一個JList並添加,編輯和刪除JButtons。我維護一個包含探測器對象的地圖。當我點擊添加按鈕我想添加到地圖一個新的探測器對象,同時我希望JList反映與新的添加。編輯和刪除也一樣。
這裏是我到目前爲止做出的,但我不知道如何使示範響應的更新:
private class DetectorsListModel extends AbstractListModel {
private List<Detector> detectors;
private Map<Long, Detector> detectorsMap;
public DetectorsListModel(Map<Long, Detector> detectorsMap) {
this.detectorsMap = detectorsMap;
detectors = new LinkedList<Detector>();
for (Long detectorID : detectorsMap.keySet()) {
detectors.add(detectorsMap.get(detectorID));
}
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return detectors.size();
}
@Override
public Detector getElementAt(int index) {
// TODO Auto-generated method stub
return detectors.get(index);
}
}
請幫幫忙!
您需要調用AbstractListModel的相應fireXXX方法。 – camickr
我的代碼中沒有看到任何'JList'。這就是說,假設你在你的例子中實際上是指'List',那就不要直接訪問你的'Map'。這樣任何調用你的'DetectorsListModel'來更新地圖都可以用同樣的方法更新'List'。 – StormeHawke
和你的XxxListModel不完整,在這裏搜索[java + swing + jlist + abstractlistmodel](http://stackoverflow.com/search?tab=newest&q= [java]%20 [swing]%20 [jlist] %20abstractlistmodel) – mKorbel