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());
enjoy!
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! :)
La NASA (Administración Nacional de la Aeronáutica y del Espacio) pone en linea Image and Video Library un nuevo Catalog...
Java Help es (o era) una librería para java que permitía añadir ventanas de ayuda HTML a nuestros proyectos, al ser una...
Las herramientas Online son cada vez más comunes y pueden encontrarse herramientas para casi todo tipo de tareas, en est...
El Método de Sustitución Directa básicamente consiste en asumir un valor, reemplazar el mismo en la función despejada y...
Java2d nos permite manipular imagenes y asi poder crear animaciones sencillas como muestra el siguiente video. Puedes de...
En este post crearemos un cliente android para consumir un recurso de un REST API utilizando las librerías GSON y Volley...
Los comentarios estan cerrados
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Muchas gracias por esta valiosa información en su sitio web.