2

私はJavaでコンタクトブックアプリケーションを書いています。連絡先は、SortedTreeSetリストモデルを使用するJListに表示されます。

検索フィールドを追加し、それにキーリスナーを追加しました。キーを入力するたびに、リストモデルのサブセット機能を使用して、連絡先の絞り込みセットを表示します。JListにこの絞り込まれたサブセットを表示させたい。

SortedSetをVectorに変換し、JListのsetListDataメソッドを使用して結果を表示することを考えていますが、これは遅くて非効率的であり、キーリスナーを使用している場合はさらに悪い考えです。

そこで、この問題を解決するための最も効率的な方法は何であるかをお聞きしたいと思います。

ご協力いただきありがとうございます。

4

3 に答える 3

5

AbstractListModelJListによって表示されるデータのソースとして、Set/subSetを直接拡張して使用します。モデル内の現在のサブセットを別のサブセットに置き換えるたびにfireContentsChanged、ビュー(JList)に変更を認識させるために呼び出します。

このように、セットをベクトルに変換する必要はありません。

于 2011-08-31T14:32:02.637 に答える
0

並行性が必要ない場合は、Vectorを使用しないでください。ArrayListを使用すると、同期されないため、高速になります。

于 2011-08-31T14:28:21.100 に答える
0

ListModelを介して(コレクション内の)データをリストにバインドする必要があります。

Advanced JListProgrammingTutorialの「ListswithDynamicContents」というタイトルのセクションを参照してください。

于 2011-08-31T14:32:45.680 に答える