java - nuevo - Cómo crear un componente Swing personalizado
java swing (6)
El JDK es de código abierto. Para entender cómo se escribe un componente Swing, no hay mejor lugar para buscar que la fuente para los componentes Swing. En general, cuando crea componentes personalizados, está interesado en uno o más de los siguientes: {semántica de interacción, representación visual, estructura de composición}
Comience con los casos más simples:
Componentes pasivos: JLabel
Componentes interactivos: JButton
JLabel
demostrará la extensión barebones de JComponent
para el dibujo personalizado de un componente; en este caso, está dibujando el valor de la cadena ''texto'' como su representación.
JButton
demostrará la extensión barebones para la interacción del usuario además de dibujar el componente.
Siempre quise crear componentes personalizados en Java o personalizar los existentes, pero mis búsquedas nunca tuvieron resultados útiles. Así que decidí preguntarle a la comunidad de StackOverflow:
¿Dónde puedo encontrar información sobre la personalización de los componentes de la GUI de Java en general?
Y cuando me refiero a la personalización, no estoy hablando de cambiar colores, fuentes, etc. Me refiero a personalizarlos realmente . Aquí hay dos componentes de ejemplo de maquetas:
Notas
Comencé esta pregunta principalmente para encontrar cómo crear los dos componentes personalizados anteriores. Pero luego me di cuenta de que no hay una pregunta general sobre hackear componentes de swing. Entonces pensé que sería mejor tener una lista de recursos.
En caso de que se esté preguntando cómo funcionan los dos componentes en la maqueta, aquí está:
Un JScrollPane personalizado que tiene dos barras de desplazamiento para cada orientación. Cada barra de desplazamiento puede actuar de manera diferente. Por ejemplo, los exteriores se desplazan normalmente y los internos mueven la vista de una manera similar a la de Picasa . De hecho, recibí una respuesta de trabajo (!) De los grupos de google here , pero eso era solo código.
El segundo es un JComboBox personalizado que, cuando se expande la lista emergente, tiene un JComponent al final. Esto puede ser cualquier cosa, desde un simple JLabel con un ícono, hasta un JButton que manipula la lista de una manera.
Pero esta pregunta no se trata de esos componentes específicos. Se trata de encontrar recursos (sitios web, libros, artículos, etc.) para aprender a crearlos .
Esta es una pregunta bastante abierta, la respuesta corta y simple es que subclasifica JComponent
o uno de sus descendientes y agrega la funcionalidad que necesita. Obviamente, dependiendo de lo que quieras hacer, puede variar en dificultad. Para empezar, le recomiendo que lea el tutorial de Sun sobre el uso de componentes Swing, donde hay ejemplos sobre cómo usar los paneles de desplazamiento y los menús emergentes . Una vez que los hayas leído y experimentado, es posible que tengas preguntas más específicas a las que las personas puedan dar respuestas más fáciles.
Si los dos componentes de su maqueta son todo lo que desea implementar, entonces nos dará una mejor idea de cómo desea que funcionen y obtendrá mejores respuestas.
Este artículo, Cómo escribir un componente personalizado Swing debe ser realmente útil. Cubre la replicación de un control deslizante de Windows que tiene pasos discretos y un rango continuo.
Lee Swing Hacks: consejos y herramientas para construir GUI Killer (Marinacci, Adamson) . En mi humilde opinión un libro esencial para trabajar efectivamente con swing en general.
Personalmente encuentro que las respuestas anteriores son demasiado generales o vagas. Además, como inevitablemente alguien se topará con este hilo tal como yo lo hice, también podría proporcionar lo que encontré:
Espero que esto ayude...
Filthy Rich Clients es un libro excelente y muy legible sobre este tema. Se trata más de mejorar la apariencia de los componentes Swing que crear componentes completamente nuevos, pero entra en las entrañas de Swing y proporciona muchos ejemplos prácticos.