Pregunta

Quiero poner en práctica siguiente funcionalidad, pero estoy confundido si es posible en Java. Si es así, que la forma? Por favor, ayuda:

Quiero crear una especie de mesa donde JTable primera fila de la tabla contiene los nombres de columna y un icono en cada columna es decir, en cada celda de la primera fila. Al hacer clic en el icono debe conducir a la eliminación de esa columna de la tabla (posible utilizando MouseListener ??).

He encontrado muchas solución en la que puedo añadir el botón a una celda en JTable pero ninguno que describe la adición de texto y el icono (con MouseListener) a una célula. Por favor, vea si puede ayudar y muchas gracias por la lectura.

¿Fue útil?

Solución

Se puede crear un TableCellRenderer a medida que se extiende JLabel. Este JLabel se puede crear con un icono (JLabel puede mostrar iconos, hacia la derecha o hacia la izquierda del texto). Usted desea que la getTableCellRendererComponent para probar wether la fila que se queden es la primera o no, y si es así, establecer el icono, de lo contrario no lo hacen.

Para la acción de remoción, se puede añadir un MouseListener sobre la mesa, y al procesar el método mouseClicked, se puede encontrar la célula que se ha hecho clic en el probando el rowAtPoint y columnAtPoint mediante la creación de un Point del mouseEvent.getX() y mouseEvent.getY(). Si determina la primera fila con el que se hizo clic en el icono, puede quitar la columna del modelo de columna.

Si por primera fila , en realidad se refiere a la cabecera de la tabla, se puede crear el mismo procesador del JTableHeader, y establecer el MouseListener en ese componente.

Otros consejos

Bueno, no entiendo su pregunta.

  

Quiero crear una especie de JTable   mesa en la primera fila de la tabla contiene   nombres de columna y un icono

¿Se refiere a la cabecera de la tabla, como la forma funciona la ordenación mediante la visualización del nombre de la columna y la dirección de ordenación?

Si es así, se utiliza un intérprete personalizado para la cabecera de la tabla y añadir un MouseListener a la cabecera de la columna para determinar qué se ha hecho clic. Usted debe ser capaz de personalizar el defecto Tabla Encabezado Procesador para hacer lo que quiera.

O quiere usted decir la primera fila de datos en la tabla. Si es así, usted todavía tiene que utilizar un procesador de costumbre, pero esta vez se agrega el MouseListener a la mesa no es el encabezado de la tabla.

En ambos casos se puede utilizar el método TableColumnModel.removeColumn () para eliminar la columna de la vista de la tabla.

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