2009-05-05 33 views
33

Siempre he querido crear componentes personalizados en Java o personalizar los existentes, pero mis búsquedas nunca dieron resultado. Así que decidí preguntarle a la comunidad de StackOverflow:Cómo crear un Componente Swing personalizado

¿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. Quiero decir realmente personalizarlos. Éstos son dos componentes de maqueta ejemplo:

Custom Components Mockup

Notas
empecé a esta pregunta principalmente para encontrar la forma de 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 preguntan cómo hacer los dos componentes en la obra 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 más similar a Picasa. De hecho, obtuve 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 es sobre esos componentes específicos. Se trata de encontrar recursos (sitios web, libros, artículos, etc.) para aprender a crearlos.

+10

Acabo de notar que la sceenshot dice "jbomponent" ...: P – pek

Respuesta

17

Este artículo, How To Write a Custom Swing Component debe ser realmente útil. Cubre la replicación de un control deslizante de Windows que tiene pasos discretos y un rango continuo.

+2

Este enlace no está actualizado. Aunque la página real todavía existe, encontrará que faltan las imágenes y los enlaces dentro de la página. ¿Alguien tiene un enlace actualizado? Además, en general, en SO colocamos el contenido relevante del enlace en la respuesta precisamente para casos como este donde el enlace se vuelve obsoleto. – Jason

4

Esta es una pregunta bastante abierta, la respuesta simple y simple es que subclase 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 Sun tutorial on using Swing components donde hay ejemplos sobre cómo usar scroll panes y . 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, se obtendrán mejores respuestas.

+0

He leído el tutorial de Java (y siempre lo hacen cuando se trata de columpio), pero no llega a ser tan profundo como lo necesito. – pek

+0

¿puede ser más específico al explicar qué es lo que necesita entonces? ¿Desea saber específicamente cómo lograr la funcionalidad que se ha burlado en la pregunta o la pregunta pretende ser más general? – ninesided

15

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, al crear componentes personalizados, usted está interesado en uno o más de los siguientes: {semántica de interacción, representación visual, estructura compositiva}

de inicio 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.

+5

Un par de advertencias a tener en cuenta al leer el código Swing: hay un montón de código para la compatibilidad con versiones anteriores; la mayor parte del código de gráficos real está en las clases de UI; las clases de Swing han "evolucionado" y no son necesariamente representativas de las mejores prácticas. –

+0

Dirección web para el código del componente –

9

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.

+0

Sí, he leído este libro. Muy buen libro pero, como dijiste, se trata principalmente de mejorar la apariencia. – pek

Cuestiones relacionadas