Witam!
Mam za zadanie napisanie programu do przegladania grafiki.
Mam już zrobione drzewko katalogów itp, ale mam problem z generowaniem miniatur, a dokładniej z generowaniem większej ilości miniatur, gdy jest ich mało (np 10) to jest wszystko ok.
Problem pojawia się gdy jest ich około 50-100. Pojawiają się wtedy komunikat, a braku pamięci.
Poniżej przedstawiam fragment kodu odpowiedzialnego, za generownie mniatur.
public void Obrazek(String dir)
{
Filtr filtr = new Filtr(null);
File katalog = new File(dir);
File pliki[] = katalog.listFiles(filtr);
if (pliki==null) return;
listaPlikow = new JPanel();
pasek2.setViewportView(listaPlikow);
listaPlikow.setLocation(0,0);
listaPlikow.setLayout(new GridLayout(50,5));
this.pulaWatkow.shutdown();
this.pulaWatkow = Executors.newFixedThreadPool(2);
System.runFinalization();
System.gc();
for(File plik : pliki)
{
Miniaturka aa = new Miniaturka(plik.getPath());
this.pulaWatkow.submit(aa);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class Miniaturka implements Runnable{
private String plik;
public Miniaturka(String plik)
{
this.plik =plik;
}
@Override
public void run() {
JCheckBox lista = new JCheckBox();
Podglad pdg = new Podglad(plik);
lista.addMouseListener(pdg);
try {
image = ImageIO.read(new File(plik));
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e.toString() + plik);
}
ImageIcon ikona = new ImageIcon(image.getScaledInstance(80,80,Image.SCALE_DEFAULT));
listaPlikow.add(lista);
lista.setIcon(ikona);
}
}
Proszę Was o jakąś poradę, jak zlikwidować ten problem