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 / Componentes / Java / Personaliza JTable «MetroUI»

Personaliza JTable «MetroUI»

Por jc mouse jueves, enero 3, 2013

Un JTable es un componente swing de java que nos permite presentar datos en forma tabular, si bien haciendo uso de IDe’s como Netbeans, podemos personalizar la interfaz desde vista diseño, si queremos realizar verdaderos cambios, lo mejor es sobreescribir la clase JTable y crear nuestro propio swing. Esto tiene muchas ventajas, imagina un proyecto donde utilizas 10 tablas, debes personalizar las 10 tablas si quieres lograr una interfaz agradable, pero si con el tiempo decides cambiar los colores u otra propiedad, deberás realizar el cambio para las 10 tablas, mucho trabajo, es más eficiente crear una tabla swing personalizada y reutilizar esta en cada proyecto, si deseas realizar un cambio en la interfaz, solo debes modificar el swing una sola vez o.O.

JTable metro UI

Escribiremos un código para personalizar un JTable y darle es aspecto moderno de Windows 8 Metro UI.

1. Crea un nuevo proyecto en netbeans File-> New project ->Java -> Java Class Library.

El nombre del proyecto sera «MetroTableUI», Netbeans nos crea un proyecto vació.

2.  Debemos crear la estructura del proyecto:

pj ide7

Como se ve en la imagen, el proyecto consta de dos paquetes «win8» y «swing«, ojo , estos nombres no son obligatorios solo nos sirven para dar cierto orden al esqueleto del swing. Osea, bien podríamos haber utilizado «org/com/» o «jc/bolivia/gui/», etc.

También tenemos tres clases:

a. MetroTableUI.java

b. HeaderCellRenderer.java

c. CellRenderer.java

Explicaremos cada una de ellas a continuación.

3. CellRenderer.java

Esta clase nos sirve para decorar las celdas que componen nuestro jtable, para aprovechar los métodos  debemos extender esta clase de DefaultTableCellRenderer y sobre escribir el método getTableCellRendererComponent.

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

    private Font normal = new Font( "Arial",Font.PLAIN ,12 );
    private Color color1 = new Color(255,255,255);
    private Color color2 = new Color(249,249,249);

    @Override
    public Component getTableCellRendererComponent ( JTable table, Object value, boolean selected, boolean focused, int row, int column )
    {    
        setEnabled(table == null || table.isEnabled());
        setBackground(Color.white);
        table.setFont(normal);

        setBackground( (row % 2 == 1)?this.color1:this.color2  );

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

        return this;
    }

}//--> fin clase

4. HeaderCellRenderer.java

Para modificar el encabezado de la tabla, implementaremos la clase TableCellRenderer y sobre-escribir el método getTableCellRendererComponent de la siguiente forma:

package win8.swing;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.TableCellRenderer;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class HeaderCellRenderer implements TableCellRenderer{

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

        JComponent jcomponent = null;

        if(value instanceof String ) {
            jcomponent = new JLabel((String) " " + value);
            ((JLabel)jcomponent).setHorizontalAlignment(SwingConstants.LEFT );
            ((JLabel)jcomponent).setSize( 60, jcomponent.getWidth() );
            ((JLabel)jcomponent).setPreferredSize( new Dimension(6, jcomponent.getWidth()) );
        } 

        jcomponent.setEnabled(true);        
        jcomponent.setBorder(javax.swing.BorderFactory.createMatteBorder(0, 0, 1, 1, new java.awt.Color(221, 211, 211)));
        jcomponent.setOpaque(true);
        jcomponent.setBackground( Color.WHITE );
        jcomponent.setToolTipText("Colum No. "+(column+1));

        return jcomponent;
    }

}

5. MetroTableUI.java

Finalmente debemos crear el JTable e implementar las clases anteriores.

package win8.swing;
import java.awt.Color;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class MetroTableUI extends JTable {

    /**
 * Constructor de clase
 */
    public MetroTableUI(){

        this.setAutoCreateColumnsFromModel(true);
        this.setAutoscrolls(true);
        this.setVisible(true);
        /** propiedades para el header */
        JTableHeader jtableHeader = this.getTableHeader();
        jtableHeader.setDefaultRenderer(new HeaderCellRenderer());
        this.setTableHeader(  jtableHeader );
        /** propiedades para las celdas */
        this.setSelectionBackground( new Color( 231, 247 , 252) );
        this.setSelectionForeground( new Color( 0,0,0) );        
        this.setGridColor(new java.awt.Color(221, 221, 221));        
        this.setDefaultRenderer (Object.class, new CellRenderer());       

        this.setVisible(true);
    }

}//--> fin clase

Solo resta crear el *.JAR clic derecho sobre el proyecto y «Clean and Build», este jar ya lo puedes añadir a la paleta de swing de netbeans y utilizarla las veces que quieras.

Dale clic para descargar el proyecto en Netbeans 7.2  enjoy 

Tags

Artículos similares

Google Circles en java

En este tutorial crearemos el botón de Google+ Google Circles para una interfaz de escritorio 🙂 si no sabes lo que son e[...]

Uso y creación de archivos 9-Patch

Antes de la aparición de los celulares inteligentes y de las grandes mejoras tecnológicas que trajeron con ellas, las ap[...]

Añadir Splash Screen en Java/Netbeans

¿Splash Screen? El splash screen o traducido al aspañol 😉  es una «Pantalla de bienvenida» que se muestra cuando se ejec[...]

Construye tu aplicación de mensajeria

En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android. Necesitamos IDE: Eclipse + S[...]

Caja blanca: Prueba del camino básico

La prueba del camino básico, es una prueba de «caja blanca» que consiste en verificar el código de nuestros sistemas de[...]

Conexion Access con PHP

Para poder conectar PHP con una base de datos de microsoft Access debemos seguir los siguientes pasos: 1. Crea una base[...]