2011-03-16 152 views
86

Tengo una pregunta de formato para mi aplicación Java swing. Debería ser bastante sencillo, pero tengo dificultades para encontrar ayuda (Todo tema parece referirse a eliminando 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.JPanel Padding en Java

Respuesta

196

Establezca EmptyBorder alrededor de su JPanel.
Ejemplo:

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

o puede tener un poco de relleno adicional cerca de la frontera existente: 'p.setBorder (BorderFactory.createCompoundBorder (nuevo EmptyBorder (10, 10, 10, 10), nuevo EtchedBorder())); ' – Synox

+3

En una nota relacionada: si alguien está desarrollando un componente personalizado (es decir, anulando' pintura *() '), debe atender estos fronteras: http://www.javaswingcomponents.com/blog/custom-swing-component-development-tip-insets-matter. – TWiStErRob

+0

¿Qué sucede cuando se cambia el tamaño de la ventana? Esta solución no es buena, ¿verdad? –

3

Cuando se necesita el relleno dentro de la JPanel general que añadir el relleno con el controlador de distribución que está utilizando. Hay casos en los que puede expandir el borde del JPanel.

+1

Añadiendo relleno al administrador de diseño (en mi caso, GridLayout) agrega relleno entre los paneles adyacentes, pero no dentro de un panel individual. Pero un borde servirá, gracias por la ayuda. – Connor

3

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

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

Si usted está buscando un borde vacío de cualquier tamaño alrededor de su texto, así, utilizar 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);