Barra de rolagem no JPanel

3 respostas
sarkozy

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:

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 ("<html><b><face font=\"20\">titulo</face></b><html>");
            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);

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?

3 Respostas

ViniGodoy

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

sarkozy

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

como eu uso preferredSize?

ViniGodoy

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

Criado 5 de janeiro de 2010
Ultima resposta 5 de jan. de 2010
Respostas 3
Participantes 2