Estou com problema na hora de executar este laço for, pois como tenho de carregar muitas fotos, o programa inicia com o Jframe, porém só continua no momento que todas as fotos estão armazenadas na memória. Agora que tenho cerca de 3.000 fotos cadastradas a apresentação do frame chega até a perder a configuração. Existe alguma forma, pelo menos de iniciar mostrando apenas algumas fotos e ir carregando as demais à medida que vou utilizando o programa?
//GridBagConstraints
GridBagConstraints gbcfoto = new GridBagConstraints();
GridBagConstraints gbcseq = new GridBagConstraints();
//Mostra Todos as Fotos
panel1 = new JPanel();
panel1.setLayout(new GridBagLayout());
seqi1=0;
dima1=6;
int fotox = 0;
int fotoy = 0;
for (int a=1; a<=totalfotosi; a++)
{
String foto = foto[a].substring(0, 5);
String fotodir = "src\\Fotos\\"+foto+".jpg";
ImageIcon icon = new ImageIcon(fotodir);
JLabel jlfoto = new JLabel(icon);
jlfoto.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jlfoto.setSize(140, 200);
Image imagem = icon.getImage().getScaledInstance(jlfoto.getWidth(), jlfoto.getHeight(), Image.SCALE_SMOOTH);
jlfoto.setIcon(new ImageIcon(imagem));
gbcfoto.gridx = fotox;
gbcfoto.gridy = fotoy;
gbcfoto.insets = new Insets (12, 16, 0, 16);
panel1.add(jlfoto, gbcfoto);
seqi1=seqi1+1;
String seqs = Integer.toString(seqi1);
JLabel jlseq = new JLabel(seqs);
jlseq.setSize(140, 20);
jlseq.setHorizontalAlignment(SwingConstants.CENTER);
gbcseq.gridx =fotox;
gbcseq.gridy = fotoy+1;
gbcseq.insets = new Insets (0, 0, 0, 0);
panel1.add(jlseq, gbcseq);
fotox = fotox +1;
if (fotox==7)
{
fotox=0;
fotoy=fotoy+2;
}
if (fotox==1)
{
dima1=dima1+230;
}
}
jf.setTitle("Total de " + seqi1 + " fotos cadastradas.");
panelcard.setPreferredSize(new Dimension(0, dima1));
panelcard.add(panel1, "aa");