A veces por alguna razón queremos cambiar el color de las filas de una tabla en Java. Digamos que queremos resaltar las filas pares o las impares dentro de una tabla para hacer más fácil la lectura de un documento. O por alguna razón queremos resaltar una columna en específico. Veamos como se hace esto.
Primero creamos un proyecto en Netbeans al que llamaremos CellRenderExample. En este proyecto agregaremos una clase a la que llamaremos CellRenderer.
Para cambiar los colores de las filas tenemos que modificar el renderizado de las mismas. Vamos a necesitar la clase CellRenderer para lograr esto. He aquí el código de la misma.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { //establecemos el fondo blanco o vacío setBackground(null); //COnstructor de la clase DefaultTableCellRenderer super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); //Establecemos las filas que queremos cambiar el color. == 0 para pares y != 0 para impares boolean oddRow = (row % 2 == 0); //Creamos un color para las filas. El 200, 200, 200 en RGB es un color gris Color c = new Color(200, 200, 200); //Si las filas son pares, se cambia el color a gris if (oddRow) { setBackground(c); } return this; } |
Con esto establecemos el renderizado de cada columna.
Ahora creamos un JFrame para colocar la tabla en lo que será nuestra interfaz.
El código para designar el CellRenderer a cada una de las columnas de la tabla es el siguiente:
1 2 3 4 5 6 7 |
public void setCellRender(JTable table) { Enumeration<TableColumn> en = table.getColumnModel().getColumns(); while (en.hasMoreElements()) { TableColumn tc = en.nextElement(); tc.setCellRenderer(new CellRenderer()); } } |
Esto lo colocamos en el constructor del JFrame.
1 2 3 4 |
public JFrameWindow() { initComponents(); setCellRender(jTable1); } |
Debe lucir así:
Necesitaremos crear una instancia de la clase JFrameWindow en la clase principal para que nos aparezca la ventana.
1 2 3 4 |
public static void main(String[] args) { JFrameWindow window = new JFrameWindow(); window.setVisible(true); } |
Ahora estamos listos para hacer la prueba. Corremos nuestro programa y este debería ser el resultado:
Vemos que las filas pares (se empieza desde 0) han sido marcadas con un color distinto a las filas impares. Eso es todo por ahora.
Los archivos de este proyecto los pueden encontrar en nuestro repositorio en GitHub.
Saludos.