Swing Warum bleibt das Image immer gleich

  • Themenstarter Themenstarter knolperlap
  • Beginndatum Beginndatum
K

knolperlap

Gast
Hollo,
ich habe das Problem, dass jedes mal, wenn ich einen neues Fenster erstelle und am Bildschirm ausgebe, das Icon das gleiche bleibt, sich aber das andere verändert.
Zur genaueren beschreibung: siehe Kommentare im Quelltext...


Java:
//eine andere klasse ruft in regelmäßigen abständen draw() auf und verändert foundWebsite, und das Bild
public class Barcode extends JFrame{

	private final Websites foundWebsites;
	private final JPanel ground = new JPanel(new BorderLayout());
	private final JPanel buttonpanel = new JPanel(new GridLayout(1, 2));
	private final JButton closebtn = new JButton("Close");
	private final JButton updatebtn = new JButton("Update");

	public boolean draw(){
		this.setTitle("QR-Login");
		this.add(ground);
//bei jedem Fenster das geöffnet wurde ändert sich der Name hier
		ground.add(new JLabel("Melde dich auf "+foundWebsites.getName()+" an!"),BorderLayout.NORTH);
//jedoch das Bild auf dem JLabel bleibt immer das gleiche
//WARUUUM?????? *verzweifelnd
		ground.add(new JLabel(drawImage()),BorderLayout.CENTER);
		ground.add(buttonpanel,BorderLayout.SOUTH);
		buttonpanel.add(closebtn);
		buttonpanel.add(updatebtn);
		addbuttonlistener(closebtn);
		addbuttonlistener(updatebtn);
		this.pack();
		this.setVisible(true);
		return true;
	}
	
	private ImageIcon drawImage(){
//qrcode.gif befindet sich im verzeichnis des programms welches von der anderen klasse geändert wird
		return new ImageIcon("qrcode.gif");
	}

kann mir da jemand helfen?? vielen vielen dank im vorraus!
 
Ähhh...weil "qrcode.gif" fest im Code steht :bahnhof::autsch::autsch:

Ich hab ja aber qrcode.gif wird immer wieder überschrieben.
hab mir schon gedacht das meine erklärung unverständlich ist.
also:

1. Klasse 1 setzt foundWebsites von Klasse Barcode auf etwas anderes.
2. Klasse 1 speichert ein bild als qrcode.gif ab. (ich habe mit Bildprogramm geprüft, di klasse ändert das bild wirklich, dort liegt der Fehler nicht)
3. Klasse 1 ruft draw() auf
4. wenn sich drawImage() das bild holt und es dann ausgegeben wird, sieht man das Bild, welches beim erstmaligen Ausgeben des JFrame Barcode verwendet wurde.
 
4. wenn sich drawImage() das bild holt und es dann ausgegeben wird, sieht man das Bild, welches beim erstmaligen Ausgeben des JFrame Barcode verwendet wurde.
Ähhh... nein. So wie oben, lädst du "qrcode.gif" immer aus dem aktuellen Verzeichnis. Du müsstest der FoundWebsites-Klasse schon noch eine Methode hinzufügen, welche den absoluten Pfad zu dieser Datei individuell zurück gibt.
Java:
new File("." + filename).getAbsolutePath();
ist selten gleich
Java:
new File(myInstance.getPath() + filename).getAbsolutePath();
 
Es muss nichtmal damit zu tun haben: ImageIcon verwendet intern einen Cache! Ich meine, mit
imageIcon.getImage().flush();
könnte man es varanlassen, das Image wirklich neu zu laden, aber das muss man nochmal testen/verifizieren
 

Zurück
Oben