Javaの:イメージアイコン - Javaのフレームの画像ファイルの更新が、画像のアイコンではありません

-2-オン:

私が持っているImageIcon中をJlabelJFrame(JavaのGUI)。

ImageIcon押しに基づいて更新されるはずです計算ボタン(すなわちcalcButton.addActionListener(new ActionListener()メソッドのコードの一部で):

icon2 = new ImageIcon("M:\\Repos\\rtrans\\radTransPlot.png");
Plot1.setIcon(icon2);
frame.add(Plot1,gc);
frame.setVisible(true);

初期ImageIcon (ICON1)は空白です。

public class RadTransGui 
{
private ImageIcon icon1 = new ImageIcon("M:\\Repos\\rtrans\\radTransPlotEmpty.png");
private ImageIcon icon2;
private JLabel Plot1 = new JLabel(icon1);

そして適切に最初に基づいて更新される計算ボタンを押してではなく、その後のプレスした後、計算ボタンを押します。内容M:\レポ\ RTRANS \ radTransPlot.png正しくたびに更新されます計算が押されています。

私は、nullにイメージアイコンを設定し、フレームに各時間のJLabelを追加および削除しようとしている計算ボタンが押されています。

何か案は?ありがとうございました。

マークJeronimus:

イメージアイコンのコンストラクタは()内部で使用していますToolkit.getDefaultToolkit().getImage

手動で使用する必要がありますToolkit.getDefaultToolkit().createImage代わりにToolkit.getDefaultToolkit().getImage前者はせず、常に新しいインスタンスを返すのに対し、後者の用途はキャッシュします。

new ImageIcon(Toolkit.getDefaultToolkit().createImage("..filename.."))

のjavadocのからcreateImage

返された画像は、このメソッドまたはそののgetImageバリアントの他の発信者と共有することはないであろう新たなオブジェクトです。

のjavadocのと比較しgetImage

基本的なツールキットの試みは、解決するために複数の要求に同じファイル名で同じ返さイメージ[...]指定したファイルの変更に含まれる画像データは、場合、このメソッドから返されたImageオブジェクトは、まだ古い情報含まれていてもよい前に呼び出した後、ファイルからロードされました。

それはあなたがやっていることは100%がわからない場合、プログラミングがどのように壊れやすいの完璧な例ですので、規定イメージアイコンは、キャッシュされた画像を使用しなければならないことというのjavadocやスペックはないように思えます。それは1つの環境で動作する場合であっても、それは常に動作します保証するものではありません。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=374789&siteId=1