2011-10-27 5 views
3

listModelの変更をリスンするために必要なインターフェイスを理解することに問題があります。 ListDataListenerだと思っていましたが、その中のメソッドを理解できません。そこでの3つの方法があり、これは私が欲しい1のようですが、私は説明を理解することはできません。JListモデルに変更を登録するにはどうすればいいですか?

contentsChanged(ListDataEvent e) 
     Sent when the contents of the list has changed in a way that's too complex to characterize with the previous methods. 

それが「複雑すぎる」とはどういう意味ですか?そして、 "以前の方法で特徴づける"ことによって?まあ、それはどういう意味ですか?これは私が欲しいインターフェースですか?

答えて

2

はい、それは正しいリスナーです。

この文は、より一般的なものであり、リストの内容に対するすべての可能な変更をカバーすることを意味します。特定のイベントが発生した場合は、他のイベント(intervalAddedおよびintervalRemoved)を使用する必要があります。

私のプラクティスでは、常に(テーブルリスナーでも)最も一般的なものを使用します。私はそれが(特に大きなリストで)最適化に使用されていたと思います。

このリスナーのチュートリアルはhereです。

+0

モデルにも火事を付ける必要がありますか?もしそうなら、どこ?ありがとう! – Nacht

3

ListModelは、そのイベントのListDataListenerリスナーにディスパッチします。可能であれば、リストモデルが詳細なintervalAddedintervalRemovedのメソッドを呼び出す方が効率的です。リストモデルのリスナー(この場合はJList)は、これらの詳細な変更を使用してビジュアルコンポーネントの変更を最小限に抑えることができます(つまり、intervalAddedの場合、リスト全体を再描画するのではなく、新しい行を追加できます)。

しかし、一部の変更は複雑すぎて追加や削除のように記述できません。この場合、リストモデルにはcontentsChangedを呼び出すオプションがあります。 JListcontentsChangedと表示された場合、リストモデルからリスト全体を再取得する可能性が高くなります。

関連する問題