ImageIcon neuladen

Benzol

Erfahrenes Mitglied
Moin,
ich bin der Meinung, ich hätte etwas gelesen, das ich ein ImageIcon manuell neuladen muss, dammit etwaige Änderungen angezeigt werden. Ich kann diese Stelle nirgents mehr finden :/
Kann mir einer einen Hinweis geben?
 
Das hilft iregntwie nicht. Ich habe erstelle jetzt jedesmal ein Vorschaubild mit einem eigenen Dateiname und lösche das Alte... jetzt zeigt ers richtig an.
 
Klingt sehr umständlich und Rechenintensiv, was versuchst du den zu machen bzw. was veränderst du den an dem Bild?
 
Es wird für jedes Bild, das ich hochlade, ein Vorschaubild erstellt was z.B. thumb.jpg heißen soll. Das Bild liegt in dem Temporären Verzeichniss des Benutzers. Von da wird dann das Icon erstellt. Wenn ich das Bild nur überschreibe und ein neues Icon erstelle, bleibt das alte Bild sozuisagen erhalten. ich schätzte, das er das dann aus dem Cache rausnimmt.
 
Hallo,

Für das "ImageIcon neuladen" braucht man lediglich das Bild neu einzulesen (getImage()) und neuzuzeichen (repaint()).

Java:
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class IconRefreshExample extends JFrame implements ActionListener {

	private Toolkit tk = Toolkit.getDefaultToolkit();

	private JLabel l = new JLabel(new ImageIcon("b1.jpg"));

	private JButton b = new JButton("Refresh");

	public IconRefreshExample() {
		super("Example");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setAlwaysOnTop(true);
		this.setLocationByPlatform(true);

		this.add(l, BorderLayout.CENTER);
		this.add(b, BorderLayout.SOUTH);

		b.addActionListener(this);

		this.pack();
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new IconRefreshExample();
	}

	public void actionPerformed(ActionEvent e) {
		((ImageIcon) l.getIcon()).getImage().flush();
		((ImageIcon) l.getIcon()).setImage(tk.getImage("b1.jpg"));
		l.repaint();
	}
}

Vg Erdal
 
Zuletzt bearbeitet:
Danke für deine Antwort Erdal!

Leider ist es nicht das was ich suche. Denn wenn ich das Bild verändere bzw. überschreibe, zeigt mir dein Programm immer noch das alte Bild an.
 
Zurück