Relleno JPanel en Java

107

Tengo una pregunta de formato para mi aplicación Java swing. Debería ser bastante sencillo, pero tengo dificultades para encontrar ayuda (todos los temas parecen estar relacionados con la eliminación de cualquier relleno predeterminado en JPanel). El texto en mis varios JPanels abraza los lados y la parte superior, tocando los bordes de colores: ¿cómo puedo agregar relleno? Gracias.

Connor
fuente

Respuestas:

234

Establecer un EmptyBorderalrededor de su JPanel.
Ejemplo:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));
Julien Vermillard
fuente
45
o puede tener algo de relleno adicional alrededor del borde existente:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
Synox
¿Qué sucede cuando se cambia el tamaño de la ventana? Esta solución no es buena, ¿verdad?
Andrew S
@Synox Legend de hecho! Tenga en cuenta que puede poner EmptyBorder como último parámetro para el relleno interno
Hunter S
3

Cuando necesita relleno dentro del, JPanelgeneralmente agrega relleno con el administrador de diseño que está utilizando. Hay casos en los que simplemente puede expandir el borde del JPanel.

jzd
fuente
1
Agregar relleno al administrador de diseño (en mi caso, GridLayout) agrega relleno entre los paneles adyacentes, pero no dentro de un panel individual. Pero una frontera servirá, gracias por la ayuda.
Connor
3

Supongo que su JPanel contiene JTextField, por el bien de la demostración.

Esos componentes proporcionan un JTextComponent#setMargin()método que parece ser lo que está buscando.

Si está buscando un borde vacío de cualquier tamaño alrededor de su texto, use EmptyBorder

Riduidel
fuente
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
fuente