Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Personlizar JTable: Header Table con iconos

Personlizar JTable: Header Table con iconos

Autor jc mouse jueves, febrero 6, 2020

En este post mostramos como personalizar el Header (encabezado) de un componente JTable en Java colocando iconos, centrando el texto y colocando bordes.

Para este ejercicio utilizaremos 3 imágenes en formato PNG de 24×24 pixeles, los cuales deben estar en un paquete de tu proyecto, para el ejemplo de este post, se encuentran en el paquete «recursos/» como se puede ver a continuación.

Pues bien, par personalizar el header de un JTable, debemos implementar nuestra propia clase TableCellRenderer. Esta clase es quien dibuja los componentes de una celda, al implementar nuestra propia clase, podemos agregar otros tipos de componentes para personalizarla. Al final, solo debemos agregar el nuevo Header a nuestra tabla y ya esta.

La clase que implementa a TableCellRenderer se llama HeaderRenderer. El código a continuación:

package org.example;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.table.TableCellRenderer;

/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class HeaderRenderer extends JLabel implements TableCellRenderer {

    final private ImageIcon llave
            = new ImageIcon(getClass().getResource("/org/example/recursos/ic_key.png"));
    final private ImageIcon nombre
            = new ImageIcon(getClass().getResource("/org/example/recursos/ic_people.png"));
    final private ImageIcon dolar
            = new ImageIcon(getClass().getResource("/org/example/recursos/ic_dollar.png"));

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        setText(value.toString());
        setOpaque(true);
        setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        setBorder(new SoftBevelBorder(BevelBorder.RAISED));
        setBackground(new Color(250,250,250));
        setIconTextGap(10);        
        setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(240, 240, 240)),
                BorderFactory.createCompoundBorder(
                        BorderFactory.createMatteBorder(0, 1, 1, 1, new Color(232, 241, 251)), 
                        BorderFactory.createEmptyBorder(8, 0, 8, 0))));
        setFont(new Font("Tahoma", 1, 14));
        setIcon(column == 0 ? llave : column == 1 ? nombre : dolar);
        return this;
    }

}

A continuación, agregamos el Header al JTable mediante el método tabla.getTableHeader().setDefaultRenderer(). Añadimos algunos datos y probamos

String data[][] = {
            {"1234-56", "Aquiles Brinco", "$us 22.000"},
            {"5678-90", "Armando Adistancia", "$us 10.000"},
            {"9012-34", "Debora Melo", "$us 98.000"}};
        String column[] = {"DNI", "Nombre", "Sueldo"};
        JTable jt = new JTable(data, column);
        jt.getTableHeader().setDefaultRenderer(new HeaderRenderer());

 

table custom

enjoy!

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

¿Qué es AngularJS?

¿Qué es AngularJS?

Bienvenido a este artículo soy Jose Pedraza Desarrollador Web por más de 7 años, escribiré una serie de artículos para i...

MAUS :- Simulador y Editor de exámenes para dispositivos móviles

MAUS :- Simulador y Editor de exámenes para dispositivos móviles

MAUS es una aplicación para dispositivos móviles con el Sistema Operativo Android que te permite realizar exámenes desde...

base de datos multiple – parte II

base de datos multiple – parte II

Continuación del tutorial «Utiliza 2 bases de datos diferentes en una aplicación» La Interfaz frmSelected.java: Haciendo...

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 barra de tareas...

Envío de correo con JavaMail/Netbeans

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el...

Botones circulares de Google Plus en java

Botones circulares de Google Plus en java

Continuación del tutorial «Google Circles en java» o.O 🙂 La Interfaz El proyecto consta de una sola interfaz la cual es...

1 comentario en “Personlizar JTable: Header Table con iconos”

  1. ahmed dice:

    Muchas gracias por esta valiosa información en su sitio web.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...

WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...

Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...

TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...

Herramientas

Generador de Enlaces a Whatsapp