Padding JPanel em Java

107

Tenho uma pergunta sobre formatação para meu aplicativo Java Swing. Deve ser bastante simples, mas estou tendo dificuldade em encontrar qualquer ajuda (todos os tópicos parecem ser sobre a remoção de qualquer preenchimento padrão no JPanel). O texto em meus vários JPanels envolve as laterais e a parte superior, tocando as bordas coloridas: como posso adicionar preenchimento? Obrigado.

Connor
fonte

Respostas:

234

Defina um em EmptyBordertorno de seu JPanel.
Exemplo:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));
Julien Vermillard
fonte
45
ou você pode ter algum preenchimento extra em p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
torno da
O que acontece quando a janela é redimensionada? Esta solução não é boa, pois não?
Andrew S,
@Synox Legend, de fato! Observe que você pode colocar EmptyBorder como último parâmetro para preenchimento interno
Hunter S
3

Quando você precisa de preenchimento dentro do JPanelgeral, você adiciona preenchimento com o gerenciador de layout que está usando. Há casos em que você pode simplesmente expandir a borda do JPanel.

jzd
fonte
1
Adicionar preenchimento ao gerenciador de layout (no meu caso, GridLayout) adiciona preenchimento entre os painéis adjacentes, mas não dentro de um painel individual. Mas uma fronteira serve, obrigado pela ajuda.
Connor,
3

Suponho que seu JPanel contém JTextField, para fins de demonstração.

Esses componentes fornecem um JTextComponent#setMargin()método que parece ser o que você está procurando.

Se você está procurando uma borda vazia de qualquer tamanho ao redor do seu texto, bem, use EmptyBorder

Riduidel
fonte
0
JPanel p=new JPanel();  
GridBagLayout layout=new GridBagLayout(); 
p.setLayout(layout); 
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; 
gbc.gridx=0;   
gbc.gridy=0;   
p2.add("",gbc);
Demetrio
fonte