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

Melody ML: Separa fácilmente pistas de audio usando IA

Melody ML: Separa fácilmente pistas de audio usando IA

Melody.ml  es un aplicación online que usa la I.A (Inteligencia Artificial) para procesar archivos MP3 y separar en pist...

Editar archivos PDF en linea

Editar archivos PDF en linea

Editar un documento PDF no es tan sencillo como editar un archivo de texto por ejemplo, para editar archivos PDFs necesi...

Reproduce archivos MP3 desde android

Reproduce archivos MP3 desde android

Reproducir archivos de audio en nuestras aplicaciones android. Necesitamos IDE Eclipse y SDK Android instalado Un archiv...

Envío de correo HTML con php

Envío de correo HTML con php

PHP cuenta con la función mail que nos permite el envío de correo desde nuestro servidor web bool mail ( string $to , st...

ExecutorService: Tareas asíncronas

ExecutorService: Tareas asíncronas

Desde java 7 esta disponible la interface ExecutorService que se extiende de Executor y nos proporciona los métodos nece...

Impresión de Interfaz Gráfica de Usuario

Impresión de Interfaz Gráfica de Usuario

En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable. La clase que...

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

Quasar es un proyecto Open Source basado en el Framework Vue que nos permite desarrollar proyectos de todo tipo, por eje...

Continuando el post de «Introducción a Retrofit» donde realizamos una breve preparación a lo que es el uso de la librerí...

Editar un documento PDF no es tan sencillo como editar un archivo de texto por ejemplo, para editar archivos PDFs necesi...

¿Alguna vez tuviste la necesidad de hacer una captura de pantalla de una página web? Si es así, seguramente buscaste y d...

Herramientas

Generador de Enlaces a Whatsapp