2013-04-13 51 views
1

我有一個JList,其中每個元素都包含一些特殊數據。所以我已經爲JList實現了AbstractListModel。從模型中刪除所有元素後更新JList(AbstractListModel)

當我在列表中有一個或多個元素時,一切正常。

但是,並不在下面的情況下工作:

  • 的jList已經與一些元素實例化。
  • 我需要從列表中刪除所有元素。
  • 我沒有在模型中可訪問的JList對象(組件),因此無法調用repaint()。

我無法調用AbstractListModel的fire ***()方法,因爲它拋出OutOfIndexException。

有什麼建議嗎?

+0

''有什麼建議嗎?「 - 是的,找出爲什麼你的代碼通過一些調試拋出異常,然後修復錯誤。我腦海中真正的問題是,爲什麼你不公佈調試實驗的結果,因爲答案都取決於此。否則我懷疑我們可以幫助你。 –

+0

因爲我正在調用fireContentsChanged(this,0,0)..它將查找不存在的列表中的第0個元素。我知道原因,但不是解決方案。 – Mo3z

+1

這是刪除元素時調用的錯誤方法。 –

回答

3

幽州:

因爲我打電話fireContentsChanged(這一點,0,0)..這將尋找第0個元素中不存在的名單。我知道原因,但不是解決方案。

刪除項目時請勿調用fireContentsChanged(...)。改爲撥打fireIntervalRemoved(...)。另外,在這種情況下,您絕不應該撥打repaint()。改變模型的狀態,然後通過調用適當的fireXXX(...)方法來通知模型的聽衆是所有應該完成的。

+0

謝謝氣墊船。我會檢查並通知你。謝謝! – Mo3z