Uso varios componentes que tienen un borde pintado. ¿Hay alguna manera fácil de agregar un margen al componente para que los bordes no estén pintados tan cerca el uno del otro?¿Cómo agrego un margen fuera del borde de un componente en Swing?
Respuesta
Esto normalmente se hace usando su administrador de diseño. Por ejemplo, si está usando GridBagLayout
, establecería insets
en el objeto GridBagConstraint
en el valor deseado.
Otra opción es usar el objeto Box
y agregar una estructura horizontal o vertical. Ver javadoc para Box.createVerticalStrut(int width)
y el createHorizontalStrut
similar.
Otra forma de obtener lo que desea es:
- obtener la corriente
Border
de su componente - si
null
, establezca unEmptyBorder
para su componente - si no
null
, crear una nuevoCompoundBorder
(con unEmptyBorder
y el actualBorder
del componente) y configurarlo para el componente
En el código, que debe ser similar que (lo siento, no lo he probado):
Border current = component.getBorder();
Border empty = new EmptyBorder(top, left, bottom right);
if (current == null)
{
component.setBorder(empty);
}
else
{
component.setBorder(new CompoundBorder(empty, current));
}
Dónde:
- componente es el componente Swing a al que desea agregar un margen
- arriba, izquierda, abajo, derecha son los píxeles importes desea agregar alrededor su componente
Tenga en cuenta que este método podría tener un impacto (tamaño, alineación) en el diseño del formulario, dependiendo de la LayoutManager
que está utilizando. Pero creo que vale la pena intentarlo.
Este método creaba bordes opacos para mí, no transparentes. Esto fue un problema Usé una versión modificada: en lugar de establecer el borde en el componente, cree un nuevo panel y establezca el borde en ese lugar, y agregue el componente a ese panel. Después de hacer esto, el borde fue transparente como se esperaba. @jfpoilpret ¿Podría actualizar su respuesta? – Loduwijk
- 1. Swing: ¿Crear un componente arrastrable ...?
- 2. Cómo crear un Componente Swing personalizado
- 3. ¿Hay un componente Swing para Google Maps?
- 4. Pintura de componentes fuera del borde personalizado
- 5. Cómo establecer un borde en un componente Vaadin?
- 6. Prueba de unidades de un componente Swing
- 7. Java swing: Cómo eliminar un ActionListener anónima de un componente
- 8. ¿Cómo agrego marcadores de diferencias al margen en emacs?
- 9. Obtener un componente Swing por su nombre
- 10. Cómo envolver un componente Swing en una aplicación JavaFX 2.0
- 11. ¿Cómo agrego un borde de 1px a un div cuyo ancho es un porcentaje?
- 12. Parando un temporizador Swing cuando un componente está oculto
- 13. Actualizar un componente fuera del contexto del componente <f:ajax>
- 14. ¿Cómo me deshago del margen adicional alrededor de un botón?
- 15. Swing: ¿cómo crear eventos y enviarlos a un componente?
- 16. ¿Cómo agrego un borde a una página usando iTextSharp?
- 17. Cómo rodear componentes Java Swing con borde?
- 18. no muestra contenido fuera del borde wpf
- 19. Borde transparente de JTextField en Swing
- 20. css - círculo con margen en el borde
- 21. Swing: ¿creando un JScrollPane que muestra su componente centrado?
- 22. ¿No se puede agregar un componente Swing a varios contenedores?
- 23. Swing JTextField cómo quitar el borde?
- 24. ¿Existe un componente Swing compatible con la sintaxis SQL?
- 25. ¿Cómo crear un borde en un borde de una vista?
- 26. ¿Cómo agrego el margen a solo la imagen de fondo?
- 27. Colapso del Margen CSS
- 28. Margen JTextField no funciona con el borde
- 29. ¿Cómo puedo repintar de manera eficiente cuando uso un gran componente personalizado en Swing?
- 30. ¿Cómo agrego un wstring?
Sí, podría usar 'Box' pero el código será tan feo si tengo muchos márgenes de caja ... – Jonas
¿Has probado usar insets? ¿Qué diseño estás usando actualmente? ¿Qué tan complicada es tu pantalla? –
El diseño es complejo, es una clase de factura que implementa 'Imprimible', así que uso muchos administradores de disposición diferentes,' SpringLayout', 'BorderLayout',' BoxLayout' y así sucesivamente ... Intentaré utilizar Insets, gracias. – Jonas