こんにちは、要素として sJList
を含むa を実装しました。JLabel
私の目的は、サーバー/クライアント チャット アプリケーションの連絡先リストを実装することです。したがって、クライアントがサーバーに接続すると、JList がビルドされて連絡先リストが表示されます。JLabels を使用することを選択したのは、アイコンとテキストも含めることができるためです。ただし、オーバーライドされた cellrenderer メソッドについて問題が発生しています。クライアントがオンライン/オフラインになるたびに、JList はその状態を更新し、最後に追加されたアイテムと同様のすべてのアイテムを設定します。こんな感じで、
オフライン状態のクライアントをユーザーのフレンド リストに追加するのはこれが初めてです。
その後、別のクライアントを追加するのは 2 回目です。
そしてついに3回目…
さらに、チュートリアルでは、JList オーバーライドのペイン メソッドについて言及し、リストに変更があったときに要素全体を何度も描画することを覚えています。実際、私はこのレンダリングの主題について初心者であり、これは非常に面倒です。ここに私のレンダラー クラスが表示されます。 レンダラーサンプル
メインクラスでこのようにモデルに要素を追加します
labelSetText = tempon.getNickName();
onlineStatus = tempon.isIsOnline();
model.addElement(createPanel());
またcreatePanel()
、次のような JLabel を返します。
public static JLabel createPanel() {
JLabel panel = new JLabel();
return panel;
}
私の問題について明確になったことを願っています。連絡先が状態を変更したとき、または連絡先が追加されたときに、このアクションが他の要素に影響を与えないようにする必要があります。私はすべての答えに非常に感謝しています(また、あなたが何をなぜしたかについての簡単な説明を追加できれば、私は感謝します.) とにかくありがとう