Barra de rolagem no JPanel

fala ae,

eu coloquei meu panel dentro do jscrollPane para ter uma barra de rolagem quando o numero de botões não couberem mais no panel… ae o que eu quero eh que o usuario possa ir decendo pelo panel com a barra de rolagem…

mas a barra não funciona…ela aparece como se não tivesse o que mostrar em baixo…

codigo exemplo:

[code]tela.setLayout(null);
JPanel p = new JPanel();
p.setLayout(null);
ImageIcon imgFaixaVermelha =new ImageIcon (panelItens.class.getClassLoader().getResource(“Imagens/efeitos/faixaVermelha.jpg”));
JLabel faixa = new JLabel (imgFaixaVermelha);
ImageIcon imgVoltar =new ImageIcon (panelItens.class.getClassLoader().getResource(“Imagens/botões/botao_voltar.jpg”));
JButton btoVoltar =new JButton(imgVoltar);
JLabel titulo = new JLabel ("<face font=“20”>titulo");
faixa.setBounds(2, 120, 160, 3);
titulo.setBounds(10, 50, 100,50);
btoVoltar.setBounds(10,20,30,30);
p.add(faixa);
p.add(titulo);
p.add(btoVoltar);
// p.setBounds(0, 0, 200, 200);
// p.setPreferredSize(new Dimension(100, 100));

        int altura = 80;
        int largura = 80;
        int x = 2;
        int y = 70;


        for (int i=0;i<50;i++)
       {
            img[i] = new ImageIcon ("D:\\imagem.jpg");
            bto[i] = new JButton (img[i]);
            

             if (i%2 == 0)
                bto[i].setBounds(x, y+=85, altura, largura);
            else
                bto[i].setBounds(x+85, y, altura, largura);

             p.add(bto[i]);

       }

       
          setResizable(false);
          p.updateUI();  
          JScrollPane main = new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
          main.setBounds(0, 0, 200, 600);
          tela.add(main);

[/code]

o problema eh que o layout do jpanel, se ficar null, não aparece a barra de rolagem… mas eu coloquei null para poder usar o setbounds…

existe um meio de resolver isso?

O problema é que você está usando setLayout(null) no seu JPanel. Nesse caso, você será obrigado a dar a ele um preferredSize.

ah sim… eu vi e editei o meu texto acima…

como eu uso preferredSize?

Basta indicar o tamanho total do painel, se ele pudesse ficar inteiro na tela.,