JScrollPane

Criei uma Classe para listar imagens gif de um diretório, para selecioná-las e tal…
Estou alocando vários Label’s com ícones para isso…
mas quando executo ele aloca infinitamente pra baixo e não deixa uma barra de rolamento… para que eu posso ver as imagens pra baixo… não consegui usar o JScrollPane (ele aparece por cima das imagens)
alguma ajuda?

public class NewClass {  
    MouseAdapter iconMA;  
            final JFrame frame = new JFrame();  
              
    NewClass()  
    {  
          
        frame.setSize(1000, 500);  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
                   
        int j=0;  
         File root = new File("Fundos");    
         File[] files = root.listFiles( new NewClass.FileImageFilter());   
         for (int i = 0; i < files.length; i++) {    
            ImageIcon ixi = new ImageIcon("Fundos\" + files<i>.getName());  
            ixi.setImage(ixi.getImage().getScaledInstance(140, 100, 0));  
            createJLabel(files<i>.getName(), j, 0,ixi);  
            j++;  
         }  
         frame.setVisible(true);  
  
    }  
      
        private void createJLabel(String text, int x, int y,ImageIcon ixi) {    
        final JLabel label = new JLabel();  
        frame.add(label);  
        label.setName(text);  
        label.setIcon(ixi);  
          
        label.setBounds(x*140,0, 140, 100);          
          
        iconMA = new MouseAdapter() {  
            @Override  
            public void mouseClicked(MouseEvent me) {  
                super.mouseClicked(me);  
                //*************//
            }  
        };  
        label.addMouseListener(iconMA);       
}    

Crie o JScrollPane, ponha sobre ele um painel, e adicione as imagens no painel:

[code]
public class NewClass {
private MouseAdapter iconMA;
private final JFrame frame = new JFrame();
private final JPanel pnlImagens = new JPanel();

public NewClass() {  
    frame.setSize(1000, 500);  
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    pnlImagens.setLayout(null); 

    int j=0;  
    File root = new File("Fundos");    
    File[] files = root.listFiles( new NewClass.FileImageFilter());   
    for (File file : files) {    
        ImageIcon icon = new ImageIcon("Fundos\" + file.getName());  
        icon.setImage(icon.getImage().getScaledInstance(140, 100, 0));  
        createJLabel(file.getName(), j, 0,icon);  
        j++;
    }  
    JScrollPane scroll = new JScrollPane(pnlImagens);
    frame.add(scroll);
    frame.setVisible(true);  
}  
  
private void createJLabel(String text, int x, int y,ImageIcon ixi) {    
    final JLabel label = new JLabel();    
    label.setName(text);  
    label.setIcon(ixi);            
    label.setBounds(x*140,0, 140, 100);
    pnlImagens.add(label);

    iconMA = new MouseAdapter() {  
        @Override  
        public void mouseClicked(MouseEvent me) {  
            super.mouseClicked(me);  
            //*************//
        }  
    };  
    label.addMouseListener(iconMA);       
}

}[/code]

Funcionou (primeiro passo… obrigado -)… mas a barra não ta mexendo… não consigo visualizar as imagens de baixo

dês de já… grato!!

Você colocou na ordem que deixei também? Veja que coloquei o Scrollpane por último. Isso porque, é importante que ele conheça o tamanho final do JPanel antes de formar a barra.

Caso contrário, você terá que chamar o método revalidate() no JPanel (para ele recalcular sua área).