package obrazy;

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class LadujObr extends Canvas{
	BufferedImage obraz;
	int szer, wys;
	
	public LadujObr(String plik, JPanel wysw){
			obraz = null;
			try{
				obraz=ImageIO.read(new File(plik));
			}catch(IOException e){
				e.printStackTrace();
				System.exit(1);
			}
			szer = wysw.getWidth();
			wys = wysw.getHeight();
			setSize(wysw.getWidth(), wysw.getHeight());
			wysw.add(this);
	}
	
	public void paint(Graphics g){
		if(obraz!=null){
			g.drawImage(obraz,0,0,szer,wys,null);
		}
		g.dispose();
	}
}

wie ktoś jak zrobić przeładowanie ponowne obrazka w tym kodzie, chodzi oto że za pierwszym razem ładuje mi się obrazek poprawnie, natomiast jak na jego miejsce chce nie zamykając obrazka wczytać kolejny to nic się nie dzieje... Proszę o pomoc....

Pomogłem sobie sam :D... wystarczyło użyć metodu

wysw.removeAll(); 

co spowodowało iż wszystko co na panelu zostało narysowane zostało usunięte. Teoretycznie działa, sprawdzałem pod kątem MemoryLeak i nie wiem czy to normalne w JAVIE czy nie ale otwarcie po sobie kolejno trzech obrazków zarezerwowało mi w pamięci 25 MB nie wiem na co :/ z początku myślałem że to typowy wyciek pamięci i czegoś nie zwalnia lub cóś ale zauważyłem że po trzecim obrazku wszystko już stoi i się nie zmienia... a więc nie jest to typowy MemLeak. Dziwne bynajmniej... jeśli ktoś ma lepszą metodę przerysowania obrazka niech się tutaj nią pochwali... repaint(); nie działa :D, być może źle używam... powyższy kod możecie śmiało wykorzystywać do swoich potrzeb.