Több "hiba" is van a kódban, ami abból adódik, hogy valami ősöreg példából dolgozol, illetve nem felelnek meg a Java elvárásoknak...
// Célszerű a feladatra metódust írni
public BufferedImage loadImage(File file, int w, int h)
{
if (file!=null)
{
// Felejtsd el a MediaTracker-t, már akkor elavult volt, amikor megírták
BufferedImage image=ImageIO.read(file);
// Az átméretezés megfelelő, nem idézem be ide
[...]
return image;
}
return null;
}
Ezen túl a helyedben nem a JPanel-be erőszakolnám be a képek megjelenítését - tudom, szinte minden leírást ezt erőlteti - hanem egy JLabel-t használnék erre, mivel ez képes képet megjeleníteni, igaz, ImageIcon-t kell neki átadni, valahogy így:
JLabel label=new JLabel(new ImageIcon(loadImage("valami.png",100,50)));
A label-t pedig oda adod hozzá és akkora méretben, amekkorában akarod... :)
Részedről ott van baj, hogy a Swing nem igazán tud róla, hogy kirajzoltál valami képet, mert erről értesíteni kell, célszerűen meg kell hívni a repaint() metódust.
--
http://www.javaforum.hu