2016-09-02 62 views
1

我如何在java.swing.AbstractListModel中使用fireContentsChanged()方法?當某些ListModel的元素的「內容」已更改時,將調用此方法。如何在java.swing.AbstractListModel中使用「fireContentsChanged」方法?

  1. 這是否僅僅意味着索引的對象發生了某種變化?
  2. 或者當索引的對象被替換爲另一個對象時,它還包括嗎?
  3. 你可以使用它來添加/刪除索引?例如,假設我從列表中的任何地方移除了10個隨機元素。我要給index0index1什麼?如果我在隨機地方插入10個元素會怎樣?

回答

2

AbstractListModel是一個抽象的執行ListModel提供的ListDataListener方法的具體實現,但它包含在內部沒有具體的數據結構。收到相應的ListDataEvent允許收聽JList以響應ListModel中的更改而自行更新。 DefaultListModelAbstractListModel的典型具體子類,內部操縱Vectorsource說明了典型的用法。特別是,fireContentsChanged()是「當列表內容的變化過於複雜,無法用以前的方法表徵時發送」fireIntervalAdded()fireIntervalRemoved()。由於Vector是原始DefaultTableModellegacy,因此您需要使用更靈活的備選方案; index0index1指您選擇的數據結構的元素。

如果我插入在什麼地方隨機10個元素?

然後index0index1應該"bracket the change."

什麼是 「支架上的變化」 呢?

在這方面,托架被用作動詞,意思以包圍或包括; index0應該包含最低的變化指數,並且index1應該包括變化最大的指數。範圍可能包括介入的單元格,即使它們沒有更改。令人高興的是,像JTable,JList只呈現可見的單元格,所以邊際成本是有界的;更多here

+0

「支架變化」是什麼意思? –

+0

我已經詳細闡述過了。 – trashgod

+0

感謝您的解釋,我想我現在就明白了。所以如果模型有20個元素,並且我刪除了隨機元素,我會開火(0,19)。如果我隨機添加了5個元素,我會開火(0,24)。那是對的嗎? –

相關問題