¿Hay alguna manera de cambiar la pintura de fondo predeterminada de todas las instancias de un componente oscilante (por ejemplo, un JPanel) para pintar con un fondo degradado? ¿O necesitaría crear una extensión de JPanel que pinta con un degradado y luego usar eso en lugar de JPanel en todas partes en mi aplicación?Fondo degradado predeterminado del componente oscilante
Respuesta
En mi humilde opinión, sería más fácil simplemente subclasificar el componente Swing y anular su método paintComponent
para hacer la pintura de degradado. Y luego, como dijiste, usa este componente personalizado en toda la aplicación.
Podría ser complicado usar las propiedades de la interfaz de usuario ya que pueden no ser consistentes en todos los archivos laf.
que fue mi pensamiento inicial. no estaba seguro si había una manera más fácil de hacerlo. especialmente si quisiera aplicar el degradado a múltiples tipos de componente, necesitaría subclase de todos los componentes. –
@JeffStorey, en ese caso, tal vez sería mejor subclasificar 'JComponent'. – Moonbeam
No estoy seguro de cómo eso ayudaría con los tipos de componentes múltiples. Digamos que estaba cambiando el fondo de un botón, ¿cómo podría subclasificar la ayuda de JComponent aquí? –
No está del todo claro qué alcance tiene la intención. ¿Te refieres a clase (todas las instancias de JPanel siguen el nuevo esquema de pintura) o quieres decir todos los componentes en un contenedor (por ejemplo, todo en Frame)?
Existen posibilidades para hacer esto dependiendo de la clase de componente, los lugares donde puede conectar son Look and Feel, y en base a una instancia por componente, el método paintComponent(), o si necesita reemplazar el aspecto estándar de un componente existente donde no puede sobreescribir el método porque no tiene control sobre él, proporcionando su propia clase de IU (consulte Component.setUI) después de que se haya creado el componente.
Excepto por el método de sobrescribir paintComponent, ninguno es fácil de implementar. Para la mayoría de las aplicaciones, el enfoque simple es el mejor :)
- 1. Obtener el color de fondo predeterminado del componente oscilante
- 2. ¿Existe un componente JList filtrable oscilante?
- 3. Eliminar componente oscilante mediante validar o revalidar
- 4. CSS validación fondo degradado
- 5. Fondo de degradado CSS3
- 6. Eliminar fondo degradado de UIWebView?
- 7. Cambiando el color de fondo subyacente de una ventana oscilante
- 8. Repetición de degradado de fondo CSS Problema
- 9. selector de tiempo oscilante
- 10. Fondo del selector predeterminado en Vistas clicables
- 11. color de fondo degradado e imagen de fondo DRYly
- 12. Cómo colocar el fondo de degradado radial
- 13. Cruce el degradado del texto del navegador en css puro sin usar la imagen de fondo
- 14. ¿Cómo se puede hacer un fondo degradado sin imágenes?
- 15. Visual Studio 2010 Fondo predeterminado del diseñador WPF/Silverlight
- 16. iOS UITableView: asignar color de fondo como degradado usando CAGradientLayer
- 17. Fondo de Android con degradado y mosaico de imagen
- 18. ¿No puede verse bien el degradado de fondo?
- 19. En estilo XAML, ¿cómo cambiar el fondo sólido a degradado?
- 20. ¿Cómo se hace un fondo degradado en css?
- 21. Cambiando los colores de fondo del degradado en Android en tiempo de ejecución
- 22. ¿Cómo se resuelven las pérdidas de memoria del oyente oscilante?
- 23. Color de fondo de notificación predeterminado
- 24. Eliminar degradado en UINavigationBar
- 25. Estrategia del componente JIRA
- 26. degradado radial Android
- 27. Diseño de widget Android: fondo negro predeterminado
- 28. ¿Cuál es un buen color de fondo predeterminado para un cuadro de diálogo WPF?
- 29. Enchufe usando en un applet oscilante
- 30. Radio de degradado como porcentaje del tamaño de pantalla
¿No solo necesitarías hacer esto para el fondo de JPanel, y luego hacer que todos los demás JPanels no sean opacos? –
@HovercraftFullOfEels, esa es otra opción también. Sin embargo, si quisiera extenderlo a otros componentes, creo que aún necesitaría extender esos componentes. –
@JeffStorey: quizás, pero no necesariamente. Podrías crear tus JPanels a través de un método de fábrica simple que establezca el opaque en falso, o podrías volver a recurrir a través de la GUI configurando que todos los JPanels no básicos no sean opacos. –