Pregunta

Siempre quise crear componentes personalizados en Java o personalizar los existentes, pero mis búsquedas nunca resultaron en algo útil. Así que decidí preguntar a la comunidad StackOverflow:

¿Dónde puedo encontrar información sobre cómo personalizar 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 realmente personalizarlos. Aquí hay dos componentes de ejemplo de maqueta:

Maqueta de componentes personalizados

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 acerca de hackear componentes swing. Así que pensé que sería mejor tener una lista de recursos.

En caso de que se esté preguntando cómo funcionan los dos componentes de 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 externos se desplazan normalmente y los internos mueven la vista de una forma similar a Picasa . En realidad obtuve una respuesta de trabajo (!) De los grupos de google aquí , pero eso fue 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 es sobre esos componentes específicos. Se trata de encontrar recursos (sitios web, libros, artículos, etc.) para aprender a crearlos .

¿Fue útil?

Solución

Este artículo, Cómo escribir un componente de Swing personalizado debería ser realmente útil. Cubre la replicación de un control deslizante de Windows que tiene pasos discretos y un rango continuo.

Otros consejos

El JDK es de código abierto. Para entender cómo escribir un componente Swing, no hay mejor lugar para buscar que la fuente de los componentes Swing. En general, cuando crea componentes personalizados, le interesa uno o más de los siguientes: {interacción semántica, representación visual, estructura de composición}

Comience con los casos más simples:

Componentes pasivos: JLabel
Componentes interactivos: JButton

JLabel mostrará la extensión de barebones de JComponent para el dibujo personalizado de un componente; en este caso, está dibujando el valor de la cadena de 'texto' como su representación.

JButton mostrará la extensión barebones para la interacción del usuario además de dibujar el componente.

Clthy Rich Clients es un libro excelente y muy fácil de leer sobre este tema. Se trata más de mejorar la apariencia de los componentes Swing que de crear componentes completamente nuevos, pero se adentra en las entrañas de Swing y proporciona muchos ejemplos prácticos.

Esta es una pregunta bastante abierta, la respuesta corta y simple es que subclase JComponent o uno de sus descendientes y agregue la funcionalidad que necesite. Obviamente, dependiendo de lo que quieras hacer, esto puede variar en dificultad. Para empezar, le recomiendo que lea el tutorial sobre el uso de componentes Swing donde hay ejemplos sobre cómo usar paneles de desplazamiento y menús emergentes . Una vez que haya leído y experimentado, podría tener preguntas más específicas que serán más fáciles de responder para las personas.

Si lo único que deseas implementar son los dos componentes de tu simulación, entonces danos una mejor idea de cómo quieres que funcionen y obtendrás mejores respuestas.

Lea Swing Hacks: consejos y recomendaciones; Herramientas para crear GUI de asesinos (Marinacci, Adamson) . En mi humilde opinión, un libro esencial para trabajar efectivamente con swing en general.

Personalmente, encuentro las respuestas anteriores demasiado generales o vagas. Además, como alguien inevitablemente va a toparse con este hilo tal como lo hice, también podría proporcionar lo que encontré:

Espero que esto ayude ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top