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:
F
fiabani
eu tentei assim:
JPanel jp = new JPanel();
JScrollPane sp = new JScrollPane(jp); JFrame.add(sp);
e nada ocorreu
G
Gobain
tenta
K
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.
F
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);
G
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)
F
fiabani
eu to setando o layout como null, erá q é isso?
G
Gobain
Pode ser tb, tenta mudar o layout então… eu uso tb com o FlowLayout e funciona.
T
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
T
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…
T
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…
F
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();