私はJavaSwingを使用してオンラインチェス(クライアントサーバー)を作成しています。問題なくchessTableフォームを作成できましたが、ロビーではユーザーのアバターを表示しています。問題は、ユーザーはサーバーを介してアバターを変更できますがsetIcon
、新しい画像のを呼び出すと、更新されません。
説明:
ユーザーはサーバーからデフォルトの画像(Avatar.jpg)をダウンロードして開始します。変更すると、サーバーはクライアントに前の画像と同じ名前で選択した新しい画像を送信するため、置き換えられます。しかし、(ダウンロード後に)この新しい画像を呼び出すsetIcon
と、何も実行されず、ラベルは彼が設定した最初の画像を表示します。フォルダーと画像がサーバーからクライアントに問題なく送信されていることを確認しています。クライアントにアバターを更新させる唯一の方法は、アプリを閉じて開くことです。何かアイデアはありますか?、まだ解決策が見つからないランダムなものをすべて再印刷しようとしましたが、clickedListenerによってラベルが更新されます。この行を使用して画像を設定します。
this.JLProfilePic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/View/Images/avatar.jpg")));
編集1:私は作業してJApplet
いませんが、ラベルアイコンを任意の画像に変更できるので、問題がどこで発生しているのかわかりませんが、アイコンをアバターに変更しようとすると、フォルダ内でAvatar.jpgが同じではないことがわかりますが、新しいものに変更された場合でも、以前のものが表示されます。
Edit2:これに対する解決策はまだ見つかりません。本当かどうかはわかりません。一度setIconを実行すると、プログラムが同じ画像に再アクセスするたびに画像がキャッシュに保存され、代わりにキャッシュに移動します。ファイルのソースを再度確認します。わかりませんが、私が作成できるロジックはこれだけです。