JPanel com barra de rolagem

Pessoal, sei que existem tópicos parecidos, mas não resolveram meu problema. Tenho um JPanel normal, e uma função que adiciona outro JPanel a ele. até aqui tudo bem. o problema surge quando o conteudo é maior que o JPanel, ou seja, gostaria de colocar uma barra de rolagem nesse JPanel principal, de modo a rolar qualquer content que estiver dentro dele, como devo proceder?

grato, Wilian Fiabani

coloca o JPanel dentro de um JScrollPane q resolve o teu problema :thumbup:

eu tentei assim:
JPanel jp = new JPanel();

JScrollPane sp = new JScrollPane(jp);
JFrame.add(sp);

e nada ocorreu

tenta

Cara quando eu tive que fazer isso em Java 1.4 ( cito a versao porque algo pode ter mudado desde entao ) eu tive que calcular o tamanho dos panel’s internos ao JPanel principal e assim passar esse tamanho para o JScrollPane.

Entao fica JPanel1 + JScrollPane1 e varios JPanel2 que ficam dentro do JPanel1.
Também utilizei um gerenciador de Layout diferente acho que foi BoxLayout ou CardLayout na vertical.

Espero que as dicas ajudem. :wink:

Pessoal, ainda não deu certo, vou postar aqui o que estou tentando fazer, talvês a operação que eu esteja tentando não seja possível.

//centro é um JPanel
main = new JScrollPane(centro,  JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

//já comentei essa linha de baixo tbm, e nada ;)
main.add(centro);

//adiciono ao JFrame da aplicação
this.getContentPane().add(main);

Olha, eu tenho aqui um scroll q é só assim e funciona sem problemas

[code]scroll = new JScrollPane();

painel = new JPanel();
painel.setLayout(new BoxLayout(painel, BoxLayout.PAGE_AXIS));

scroll.setViewportView(painel)[/code]

eu to setando o layout como null, erá q é isso?

Pode ser tb, tenta mudar o layout então… eu uso tb com o FlowLayout e funciona.

Pessoal, estou com o mesmo problema, mas negocio é o seguinte:

usar o (painel.setLayout(new BoxLayout(painel, BoxLayout.PAGE_AXIS)):wink: não resolve meu problema porque eu adiciono objetos (buttons, panels…) a um jPanel em tempo de execução, sendo assim o tamanho desses objetos não da pra alterar, ficam sempre ocupando a tela toda!!!

tem algum outro jeito sem precisar ficar calculando as bordas dos objetos???

Obrigado

Nao usem Absolute Layout (setLayout(null) ), as funcoes GUI (muitas delas) sao gerenciadas pelos gerenciadores de layout, setando o layout como null vcs tao abrindo mao dessas funcoes… aih sabe Deus oq q acontece, indico o uso do GroupLayout

Olá.

Quanto ao Layout esta td ok, mas mesmo assim, nada…
se eu pelo menos conseguisse alterar o tamanho (width e height) em tempo de execução… td bem, mas quando se coloca um panel dentro de um scroollPane o negócio fica mt automático, nem da pra mudar o tamanho…
enfim, ao inserir objetos nesse panel em tempo de execução as barras de rolagem não aparecem!!!
alguem tem alguma outra idéia??

desde ja agradeço…

[quote=ThiagoCortez]Olá.

Quanto ao Layout esta td ok, mas mesmo assim, nada…
se eu pelo menos conseguisse alterar o tamanho (width e height) em tempo de execução… td bem, mas quando se coloca um panel dentro de um scroollPane o negócio fica mt automático, nem da pra mudar o tamanho…
enfim, ao inserir objetos nesse panel em tempo de execução as barras de rolagem não aparecem!!!
alguem tem alguma outra idéia??

desde ja agradeço…

[/quote]

Só p/ coloca aqui q achei a solução:

//remove todos os componentes
jp.removeAll();
//adiciona o conteudo
jp.add(new JLabel("Tchê!"));
//aqui vem o mistério
jp.updateUI();