2012-02-23 5 views
0

チャットアプリ用に私自身のListCellRendererを実装しました。私はJListを使用してすべてのユーザーを一覧表示します。セルレンダラーは、特定のユーザーが現在オンまたはオフラインである場合に表示されるアイコンとその名前から主に構成されます。このリストは、JListに必要な情報を提供するために使用するDefaultListModelによって制御されます。Java:カスタムListCellRendererを更新するには?

しかし、リストモデルが状態を変更すると(ユーザーがオフラインになるなど)、リストセルレンダラーが呼び出されていないようです。

誰か任意のアイデアはどのようにこの問題を解決するには? JListインスタンスでupdateUI()を呼び出そうとしましたが、助けにはなりませんでした。

事前に感謝します。

+0

私たちにコードを教えてください。モデルが変更されたときにレンダラーを呼び出す必要があります。おそらく、モデルが変更されたことを知らせるためにイベントを発生させるのを忘れていたでしょう。 –

答えて

4

セルレンダラーはおそらくうまく動作します。機能していないのはListModelです。 DefaultListModelはモデルオブジェクトの内部状態の変更を検出しません。リストモデルでfireContentsChangedに電話する必要があります。おそらく、モデルオブジェクトにリスナーを追加する必要があります。DefaultListModelを拡張する必要がある場合もあります。私はそれのコードが表示されないので、あなたの見た目はわかりません。

名前のついたランダムなメソッドを呼び出すだけではいけません(updateUIは非常に異なることがあります)。

+0

早急な返信をありがとうございました。 fireContentsChangedを呼び出そうとします。このメソッドは保護されているので、実際にDefaultListModelを拡張する必要があります。 – salocinx

+1

btw。 javadocは、JList.UpdateUI()の機能について次のように説明しています。現在のセルレンダラーが、ルックアンドフィール自体ではなく開発者によってインストールされている場合、セルレンダラーとその子も更新されます。良い音だけでなく、私の問題にも役立ちます。あなたは思いませんか? – salocinx

+0

それはあなたの助けに多くのおかげで動作します:-)! – salocinx

関連する問題