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?
coloca o JPanel dentro de um JScrollPane q resolve o teu problema :thumbup:
fiabani
eu tentei assim:
JPanel jp = new JPanel();
JScrollPane sp = new JScrollPane(jp); JFrame.add(sp);
e nada ocorreu
Gobain
tenta
keller
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.
fiabani
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 JPanelmain=newJScrollPane(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çãothis.getContentPane().add(main);
Gobain
Olha, eu tenho aqui um scroll q é só assim e funciona sem problemas
scroll = new JScrollPane();
painel = new JPanel();
painel.setLayout(new BoxLayout(painel, BoxLayout.PAGE_AXIS));
scroll.setViewportView(painel)
fiabani
eu to setando o layout como null, erá q é isso?
Gobain
Pode ser tb, tenta mudar o layout então… eu uso tb com o FlowLayout e funciona.
ThiagoCortez
Pessoal, estou com o mesmo problema, mas negocio é o seguinte:
usar o (painel.setLayout(new BoxLayout(painel, BoxLayout.PAGE_AXIS)) 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
A
aleeebr
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
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…
ThiagoCortez
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…
fiabani
Só p/ coloca aqui q achei a solução:
//remove todos os componentesjp.removeAll();//adiciona o conteudojp.add(newJLabel("Tchê!"));//aqui vem o mistériojp.updateUI();