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.

Respuestas:


234

Establecer un EmptyBorderalrededor de su JPanel.
Ejemplo:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));

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.


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


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);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.