Barra de rolagem para vários Painéis

4 respostas
mr.garcialuigi

[b]Pessoal é o seguinte, vou tentar me explicar.

Tenho um programa rodando da seguinte maneira:

Um painel base(Card Layout), e outros painéis dentro desse base, um encima do outro.
Os botões do menu vão alternando entre visible true e false, para qual painel deve ser mostrado.
O base funciona justamente para isso, para empilhar os outros.

Problema:

Cheguei á uma etapa, que alguns painéis passarão do tamanho da tela, e então seria necessário barras de rolagem.
E também para manter a dinâmica, no caso dos monitores etc…

Solução Prévia:

Criei um scrollpane, e coloquei o meu painel base dentro desse scrollpane. Setei os prefferedSize null, pra ele não fazer o que eu não quero.
Legal, ta funcionando. Só tem um probleminha, aliás problemão:

O scroll fica o mesmo independente do painel que está sendo mostrado. Ou seja, se o de listagem for o mair painel,
se você tiver visualizando o de cadastro, que é menor, a barra de rolagem vai obedecer o maior, que é o de listagem.
Vai sobrar um espaço embaixo que não deveria sobrar.

A estrutura do programa tá assim:
[color=red]
P.S: para demonstrar a hierarquia, coloquei “_” no lugar de espaço. Quem está dentro de quem.

-JFrame;

__- Jscroll pane base

_____- JPanel base(card layout)

__________- Jpanel cadastro;

__________- Jpanel home;

__________- Jpanel listagem;

__________- Jpanel configuracoes;

etc…[/color]

Pergunta:

Tem como esse scroll ser dinâmico, e obedecer o que ta sendo mostrado, ou eu devo
fazer um scroll pra cada painel? Dei uma baita pesquisada, mas ta difícil achar solução.[/b]

4 Respostas

S

Não tem como usar uma estrutura de abas? Aí você alterna entre as abas ao invés de ficar sobrepondo um JPanel em cima do outro.

E

experimente executar um revalidate() do scroll pane toda vez que mudar o painel em foco.

mr.garcialuigi

Vou tentar fazer isso elisson! Posto se deu certo ou não depois.

mr.garcialuigi

deste jeito não deu, mas achei algo que pode ser o inicio da solução. To atualizando o preferredSize do painel base, com o preferredSize do atual painel em foco. Como o scrollpane engloba o painel base, ta dando certo. O scroll ta funcionando legal. Acho eu que é por ai, ou eu deveria trabalhar com outra coisa? Talvez sem ser com o preferredSize.

Criado 1 de novembro de 2012
Ultima resposta 7 de nov. de 2012
Respostas 4
Participantes 3