2009-04-18 21 views
11

Tengo una JTable que almacena los resultados de una consulta de base de datos, hasta ahora todo va bien. Lo que quiero es que la última columna de cada tabla tenga un JButton seleccionable que abrirá la pantalla de edición para el objeto representado en esa fila, y eso significa que el botón necesitará conocer los detalles de la primera columna de la tabla desde su propia fila (la ID de la base de datos).¿Es posible incluir JButton en una JTable?

¿Algún consejo? Ya intenté simplemente agregar JButtons pero se convirtieron en texto cuando intenté ejecutarlo.

Respuesta

5

Contrariamente al tutorial anterior, hay una forma de hacerlo sin una complicada matemática de posicionamiento, oyentes de mouse personalizados y modelos de tabla personalizados. En su lugar, se puede hacer con una sola clase personalizada sencilla siguiendo el patrón descrito aquí:

http://web.archive.org/web/20100623105810/http://ivolo.mit.edu/post/A-Simple-Pattern-for-Embedding-Components-into-a-Swing-JTable.aspx

+1

esto es excelente y muy útil. – Epaga

+2

El enlace está muerto, ¿todavía es posible encontrar esa solución en algún lugar? – KristianMedK

+1

The Way Back Machine tiene una copia ... Pero parece que esta solución utiliza un modelo de tabla personalizado (aunque anónimo), así que no estoy seguro a primera vista de qué es mejor este tutorial que cualquier otro ... – Rini

1

Eche un vistazo a la introducción de Sun al componente JTable, específicamente, la sección sobre Editors and Renderers. Discute el uso de la alternativa CellRenderers y CellEditors. Lo que tendría que hacer es crear (o tomar prestado) un ButtonCellRenderer y un ButtonCellEditor y luego aplicarlos a la columna en cuestión en su JTable. Los ejemplos que se encuentran en los artículos vinculados deberían brindarle toda la información que necesita.

+0

es fácil, excepto obtener clics del mouse para reenviar a los botones de ButtonCellRenderer. –

+2

El procesador no acepta eventos. Ese es el trabajo del editor. Eche un vistazo a mi tutorial en la respuesta que di. – pek

Cuestiones relacionadas