Java - tablecellRenderer

   
Vista:

tablecellRenderer

Publicado por alejandro (65 intervenciones) el 18/03/2008 23:15:10
Saludos compañeros, alguien me puede ayudar con un ejemplo de tableCellRenderer. Se que hay que extender de una clase que tiene el metodo getTableCellRendererComponent, pero no se donde le indico la tabla que quiero cambiar de color (quiero cambiar de color la primera columna de una tabla)

Por favor, alguna idea ??

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:tablecellRenderer

Publicado por Manuel C. (13 intervenciones) el 20/03/2008 08:10:30
Para meterte con el "tableCellRenderer", debes de saber vien lo que estas haciendo, ya que este es el encargado de determinar el componenete que en su matoria es una JLabel de dibujar el contenido de determinada celda o serie de celdas.

Si solo es cambiar el color de una columna en especial, no es mucho el problema.

Primero tienes que extender la clase "DefaultTableCellRenderer" y sobre escribirel metodo "getTableCellRendererComponent"

Este metodo regresa un objeto del tipo "Component" que como mensiono en su mayoria es una JLabel, antes de regresar a la JLabel le asignas el color que quieras y listo.
por ejemplo:

public class ColorRenderer extends DefaultTableCellRenderer {

/**
* Metodo que regresa el componente que dibujara el contenido de la celda, en color verde.
*
* @param JTable tabla. La Tabla que invoca el metodo.
* @param Object obj. El tipo de objeto a dibujar.
* @param boolean isSelected. Si esta seleccionada la celda.
* @param boolean foco. Si la celda tiene el foco.
* @param int fila. La fila.
* @param int col. La columna.
*
* @return El tipo de objeto que dibujara el contenido de la celda.
*/
public Component getTableCellRendererComponent(JTable tabla, Object obj, boolean isSelected, boolean foco, int fila, int col) {

JLabel etiqueta = new JLabel();

if(col == 2 {
etiqueta.setOpaque(true);
etiqueta.setBackground(new Color(Color.GRREN));
}

return etiqueta;
} // Fin de getTableCellRendererComponent
}// Fin de la clase.

Y a tu tabla le tienes que decir donde encontrar tu nuevo renderer para un tipo de columna dado.

miTabla.setDefaultRenderer(String.class, new ColorRenderer());

Esta linea hara que todas la columnas que sean iguales a un String, encuentren a su renderen en la clase Colorrenderer.

Cuando entiendes el mecanismo de rendereo de una tabla en Java, puedes hacer cosas muy interesantes.

Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar