Como adiciono espaço a um JPanel, para que o JScrollPane não fique sobre meus componentes?
-
15-11-2019 - |
Pergunta
Eu tenho um JScrollPane e quando carrego meu aplicativo, a barra fica em cima de um dos meus botões.O que eu gostaria de fazer é adicionar algum espaço ao lado do meu botão para que a barra de rolagem passe sobre o espaço e não sobre o meu botão.
Código de exemplo que tentei:
JPanel eButton = new JPanel(new BorderLayout());
JPanel spaceFiller = new JPanel();
spaceFiller.setSize(30, 10);
eButton.add(editButton, BorderLayout.EAST);
eButton.add(spaceFiller, BorderLayout.WEST);
O problema com esse código é que ele ainda sobrescreve meu botão e nenhum espaço é adicionado.Qual é a melhor maneira de garantir que o JScrollPane não se sobreponha aos componentes do meu JFrame?
Obrigado
Solução
Para garantir que o tamanho do JPanel seja respeitado você deve usar setPreferredSize() em vez de setSize().
Outras dicas
No seu código de exemplo, você não inverteu LESTE e OESTE?Não deveria ser assim:
eButton.add(editButton, BorderLayout.WEST);
eButton.add(spaceFiller, BorderLayout.EAST);
Isso faria mais sentido, já que a barra de rolagem aparecerá no lado direito (LESTE).
Observe que a solução que você sugere, embora possa funcionar (depois de trocar EAST e WEST), parece mais um hack do que uma solução real.