While executando muito rapido

Estou com um problema no código,

Estou setando com um for as imagens na Label, no caso de ter 8 imagens ele setará 8 vezes na label, porém, o comando é muito rápido e ele só aparece a primeira imagem e a ultima, mesmo colocando um sleep, ele para de executar, porém não seta na label,

apenas seta quando coloco um JOptionPane.showMessageDialog, pois ele para de processar e seta a imagem, não sei se isso seria um muito processo, mas só joga na Label quando fica Stepping,

Gostaria de que o programa setasse a imagem, e aguardasse 3 segundos, mas realizando a forma do Sleep e Timer não funciona, ele só para o processamento mas não seta a Imagem, Deve ser igual ao Jprogress cada vez que se passa nele se eu colocar um SetValue no for, ele vai aparecer o primeiro valor e o ultimo

for(int i =0; i< comboBox_2.getItemCount();i++){
//System.out.println(i);
comboBox_2.setSelectedIndex(i);
File f = new File(“Project/” + lblNewLabel_2.getText() + “/img/”+ comboBox_2.getSelectedItem());
try {
bufferedImage = ImageIO.read(f);
ii = new ImageIcon(bufferedImage);
System.out.println(f);
ii4 = new ImageIcon(ii.getImage().getScaledInstance(
scrollPane.getWidth(),scrollPane.getHeight(),
Image.SCALE_SMOOTH));
lblNewLabel.setIcon(ii4);
comboBox_3.setSelectedIndex(padrao);
scrollPane.setVerticalScrollBar(vertical);
scrollPane.setHorizontalScrollBar(horizontal);
t = new Timer(1000, al);
t.start();
JOptionPane.showMessageDialog(null, barcode);
} catch (IOException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}

Vc vai precisar do sleep sim, porém mesmo com ele, a tela ficará travada até a finalização do método, onde então ela se atualizará. Para fazer um processamento em background e manter a thread da tela rodando vc precisa colocar este processo em uma outra thread.
Antes que pergunte COMO, tem mta coisa sobre isso no google e no próprio GUJ.

Aqui está o que vc precisa saber.

Processamento assíncrono - seque um link de referência sobre o assunto