Hallo,
ich habe ein Problem mit meiner Gui.
Dort können Bilder geladen werden, diese werden in einem Thread verarbeitet und als Thumbs dargestellt.
Die Darstellung erfolgt über eine eigene Klasse, die von JPanel ableitet. Die Bilder-JPanels werden auf einem JScrollPanel abgelegt.
Problem:
Werden viele (>100 Bilder) ausgewählt, dann bekomme ich irgendwann die folgende Exception:
ImgShowComponent ist die besagte Ableitung von JPanel für die Bilder.
Der ImageBuilder ist der Arbeiter-Thread:
Hat jemand eine Idee was da falsch läuft? Ich wüsste jetzt auch nicht, welche Codestelle dafür relevant ist, sonst würde ich die posten.
Vielen Dank!
ich habe ein Problem mit meiner Gui.
Dort können Bilder geladen werden, diese werden in einem Thread verarbeitet und als Thumbs dargestellt.
Die Darstellung erfolgt über eine eigene Klasse, die von JPanel ableitet. Die Bilder-JPanels werden auf einem JScrollPanel abgelegt.
Problem:
Werden viele (>100 Bilder) ausgewählt, dann bekomme ich irgendwann die folgende Exception:
Exception in thread "Thread-5" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferByte.<init>(Unknown Source)
at java.awt.image.ComponentSampleModel.createDataBuffer(Unknown Source)
at java.awt.image.Raster.createWritableRaster(Unknown Source)
at javax.imageio.ImageTypeSpecifier.createBufferedImage(Unknown Source)
at javax.imageio.ImageReader.getDestination(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at nightClient.Image.ImgShowComponent.<init>(ImgShowComponent.java:118)
at nightClient.Image.ImageBuilder.run(ImageBuilder.java:39)
ImgShowComponent ist die besagte Ableitung von JPanel für die Bilder.
Der ImageBuilder ist der Arbeiter-Thread:
Java:
public void run() {
// we will need the progressbar...
JProgressBar myProgBar = myController.getView().getMyProgressBar();
//create image objects out of selected files and put images on view
for (int i = 0; i < myFiles.length; i++)
{
// pack on viewport
imgPanel.addImage(new ImgShowComponent(myFiles[i].getAbsolutePath(), this.myController));
// update status bar
int perCent = (i * 100) / myFiles.length;
myProgBar.setVisible(true);
myProgBar.setValue(perCent);
myProgBar.setStringPainted(true);
}
myProgBar.setVisible(false);
}
Hat jemand eine Idee was da falsch läuft? Ich wüsste jetzt auch nicht, welche Codestelle dafür relevant ist, sonst würde ich die posten.
Vielen Dank!