Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Personlizar JTable: Header Table con iconos

Personlizar JTable: Header Table con iconos

Por 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

Artículos similares

SharedPreferences: Preferencias de Usuario

En este post construiremos paso a paso un SharedPreferences más conocido en español como «Preferencias de Usuario«, esta[...]

ANSI: Colorear consola de salida de Netbeans

Cuando realizamos proyectos java desde Netbeans, usamos System.out.println para imprimir datos en consola (para dep[...]

Microsoft Windows XP finalmente a muerto

Windows XP fue lanzado oficialmente el 25 de octubre de 2001, han pasado ya 17 años y 7 meses convirtiendo así a XP uno[...]

Resolución de pantalla con LibGDX

En este tutorial, veremos un poco más de lo que son las texturas en libGDX y dos maneras de añadirlas a nuestros juegos,[...]

10 compiladores online para estudiantes

¿Quieres iniciarte en la programación? ¿Eres un programador impaciente que odia instalar cualquier software en su comput[...]

Archivos binarios en Java (Lectura/Escritura)

Según Santa Wikipedia: «Un archivo binario es un archivo informático que contiene información de cualquier tipo codifica[...]