Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Ejercicios / Java / JTable de colores [Problema Resuelto]

JTable de colores [Problema Resuelto]

Autor jc mouse martes, junio 12, 2012

Problema: Se extrae registros de una base de datos y se desea mostrar estos en un control JTable utilizando un DefaultTableModel, los registros están conformados de la siguiente manera:

ESTADO | CODIGO | NOMBRE | APELLIDO
 TRUE    123456   Juan     Perez
 FALSE   654321   Maria    Chela
 TRUE    123321   Nadia    Nadie

Condición: Se desea que los registros con ESTADO=FALSE “0”, se muestren en el JTable con color ROJO, la linea completa, los registros con ESTADO=TRUE, se muestran normalmente.

SOLUCIÓN: Para pintar las celdas de un JTable, debemos crear una clase que se extienda de un DefaultTableCellRenderer para redefinir sus métodos e implementar la condición que nos permita pintar o no las celdas de color rojo. A esta clase también le pasaremos un parámetro entero que corresponderá a la columna que deseamos controlar, en este caso, la columna “0”.

La clase se llamara FormatoTabla.java

import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class FormatoTabla extends DefaultTableCellRenderer{

    private int columna_patron ;

    public FormatoTabla(int Colpatron)
    {
        this.columna_patron = Colpatron;
    }

    @Override
    public Component getTableCellRendererComponent ( JTable table, Object value, boolean selected, boolean focused, int row, int column )
    {        
        setBackground(Color.white);//color de fondo
        table.setForeground(Color.black);//color de texto
        //Si la celda corresponde a una fila con estado FALSE, se cambia el color de fondo a rojo
        if( table.getValueAt(row,columna_patron).equals(false) )
        {
            setBackground(Color.red);
        }

        super.getTableCellRendererComponent(table, value, selected, focused, row, column);
        return this;
 }

}

Nuestra interfaz de prueba, consta de un JButton y un JTable, la clase FormatoTabla.java, la implementamos en nuestra interfaz, en el evento ActionPerformed del JButton:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        DefaultTableModel TableModel = new DefaultTableModel();
        //se colocan algunos datos en el TableModel
        TableModel.setDataVector(new Object[][] {
        { false, "12345789", "Elsa", "Pallo" },
        { false, "94675631", "Marcia Ana", "Tierra" },
        { true,  "65663522", "Elsa", "Porrico" },
        { true,  "24343556", "Aquiles", "Castro" },
        { true, "84848844", "Jorge", "Nitales" },
        { false, "84848488", "Debora", "Melbollo" },
        { true, "21212111", "Alex", "Cremenento" },
        { false, "67674455", "Carlitos", "Tado" },
        { false, "99873132", "Elton", "Tito" },
        { true, "90053535", "Irma", "Tando" },
        { false, "64665112", "Matias", "Queroso" },
        { true, "73363844", "Rosa", "Meltrazo" },
        { false, "32111993", "Dolores", "Delano" } }, new Object[] {
        "", "Codigo", "Nombre", "Ap. Paterno" });
        jTable1.setModel(TableModel);

        //se crea instancia a clase FormatoTable y se indica columna patron
        FormatoTabla ft = new FormatoTabla(0);
        jTable1.setDefaultRenderer (Object.class, ft );
        jTable1.getColumnModel().getColumn(0).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(0).setMinWidth(0);
        jTable1.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0);
        jTable1.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0);
    }

Ejecutamos y listo 🙂

rojo rojito

Ejemplo en Netbeans 6.9 HERE

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

SDKMAN: Administrador del kit de desarrollo de software

SDKMAN: Administrador del kit de desarrollo de software

SDKMAN! es una herramienta para la administración de versiones paralelas de varios programas de desarrollo de software c...

Crear Miniaturas Thumbnails de Videos (Código Fuente)

Crear Miniaturas Thumbnails de Videos (Código Fuente)

VLC Media Player es un reproductor multimedia de código abierto muy popular desarrollado por el proyecto VideoLAN. VLCJ ...

Crear archivos JNLP con Netbeans

Crear archivos JNLP con Netbeans

¿Que son los archivos JNLP? Java Network Launching Protocol (JNLP) es una especificación usada por Java Web Start. Esta...

JTree Recursivo

JTree Recursivo

En un post anterior se vio como llenar un JTree en donde se conocía de antemano que estructura iba a tener esta sin emba...

Impresión de imágenes en PDF

Impresión de imágenes en PDF

Existen varias aplicaciones (free y de pago) que emulan una impresora virtual para generar archivos en PDF  (Portable Do...

Minimizar aplicación al SystemTray/Bandeja del Sistema

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama “Área de Notificación” es la sección de la barr...

15 comentarios en “JTable de colores [Problema Resuelto]”

  1. gracias dice:

    buen aporte pero podrias hacerlo lo mismo para vb.net con base de datos mysql

    1. Mouse dice:

      claro no veo porque no :), lo tendras muy pronto

  2. gracias dice:

    muchas gracias estoy haciendo un proyecto con base de datos y esoty en ese dilema

  3. gracias la verdad un gran apoyo

  4. Chino dice:

    La unica pagina qlo explica bien :_)

  5. Enrique dice:

    Graciass!! muy bueno, excelentee!! (y)

  6. Jhonny Esquivel dice:

    Hola, me gustaría saber si se puede hacer algo como un formato condicional de excel en el JTable, no se si ya lo hayas hecho, gracias por tu atención

    1. Jhonny Esquivel dice:

      Ya lo logre xD jeje gracias, no sabes cuanto me has ayudado para mis proyectos

  7. diegodesdecolombia dice:

    Muchas gracias .. Excelente aporte y de una manera sencilla.

  8. Allan Méndez dice:

    Muy buen aporte, es de gran ayuda, saludos.

  9. Allan Méndez dice:

    Cómo podría pintarse una sola celda?
    gracias de antemano.
    Saludos

  10. Carlos dice:

    Hola estoy haciendo un calendario con un JTable, y me gustaría poder colorear días en concreto según los cargue de la base de datos. Solo me gustaría saber como crear un método al cual pasandole un valor, te pinte solo la celda con ese valor. Un saludo

  11. Cristi dice:

    Muy bien

  12. EMILIANO GARCIA dice:

    te consulto, me funciona bien cambiando el color a la letra pero no con el fondo.. que puedo hacer? tengo tal cual el codigo al tuyo. saluods

    1. Mouse dice:

      modifica las propiedades setOpaque y setBackground

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

“MyBatis es una herramienta de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacena...

MyBatis es un framework de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacenados a part...

Webcam Capture es un API  que permite usar una cámara web incorporada o externa directamente desde código Java utilizand...

im4java es una interfaz pura de Java para la línea de comandos de ImageMagick. La interfaz de la línea de comandos de IM...

Herramientas

Generador de Enlaces a Whatsapp