Código Java – Ocultar Columnas de un JTable

Este es el Ejemplo #03 del Topic: Programación Gráfica en Java.

Lo que el siguiente procedimiento realiza es recibir como parámetro a la tabla y un array de tipo entero con los índices de las columnas que se desean ocultar. Los índice de las columnas empiezan desde el 0.

...
    private void setOcultarColumnasJTable(JTable tbl, int columna[])
    {
        for(int i=0;i<columna.length;i++)
             tbl.getColumnModel().getColumn(columna[i]).setMaxWidth(0);
             tbl.getColumnModel().getColumn(columna[i]).setMinWidth(0);
             tbl.getTableHeader().getColumnModel().getColumn(columna[i]).setMaxWidth(0);
             tbl.getTableHeader().getColumnModel().getColumn(columna[i]).setMinWidth(0);
        }
    }
...

Código de Ejemplo:

package beastieux.gui;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author beastieux
 */
public class Ejm03_OcultarColumnasJTable extends JFrame{
    public Ejm03_OcultarColumnasJTable()
    {

        JTable tblEjemplo = new JTable();
        JScrollPane scpEjemplo= new JScrollPane();

        //Llenamos el modelo
        DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(),
                                                             getColumnas());

        tblEjemplo.setModel(dtmEjemplo);
        scpEjemplo.add(tblEjemplo);
        this.add(scpEjemplo);
        this.setSize(500, 200);
        scpEjemplo.setViewportView(tblEjemplo);

        setOcultarColumnasJTable(tblEjemplo,new int[]{0,3});

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }

    //Datos de las filas
    private Object[][] getFilas()
    {
         Object fila[][]=new Object[][] {
                            {"a1", "b1", "c1", "d1"},
                            {"a2", "b2", "c2", "d2"},
                            {"a3", "b3", "c3", "d3"}};
         return fila;
    }

    //Encabezados de la tabla
    private String[] getColumnas()
    {
          String columna[]=new String[]{"A","B","C", "D"};
          return columna;
    }

    private void setOcultarColumnasJTable(JTable tbl, int columna[])
    {
        for(int i=0;i<columna.length;i++)
        {
             tbl.getColumnModel().getColumn(columna[i]).setMaxWidth(0);
             tbl.getColumnModel().getColumn(columna[i]).setMinWidth(0);
             tbl.getTableHeader().getColumnModel().getColumn(columna[i]).setMaxWidth(0);
             tbl.getTableHeader().getColumnModel().getColumn(columna[i]).setMinWidth(0);
        }
    }

    public static void main(String args[]) {
        Ejm03_OcultarColumnasJTable obj = new Ejm03_OcultarColumnasJTable();
        obj.setVisible(true);
    }
}

Pueder ir al artículo principal:

Códigos Sencillos hechos en Java

6 thoughts on “Código Java – Ocultar Columnas de un JTable

  1. La forma correcta es usando…

    jTable.removeColumn(ListadoTable.getColumnModel().getColumn(1));

    ya que con el width solo la hacemos más pequeña y puede visualizarse si hacemos un resize de una columna adjunta.

    Esto no hace que se pierda su valor de columna.

    Saludos

  2. GRACIAS!!!!! no dormi esta noche tratando de aprender con funciona muy bien el jTable para que jajaja gracias!!!! de veraz!!! me salvaste ahora podre descanzar un poco 😀

  3. Yo le pongo todos los parametros de ancho en 0 y me queda una columna pequeñita pero aun visible… que estoy haciendo mal?

  4. Una mehor solucion aqui
    La defines en una clase final de java este metodo para que sea reutilizable
    Espero te sirva mucho:
    este metodo recibi dos parametros
    final JTable tabla => la jtable en la que quieres ocultar las columnas
    final int… Columnas=> las columnas que quieres ocultar le pasas cualquier cantidad de columnas.

    public static void OcultarColumnasJtable(final JTable tabla, final int… Columnas) {
    try {
    for (int i : Columnas) {
    tabla.getColumn(tabla.getColumnName(i)).setWidth(0);//Ancho de la columna
    tabla.getColumn(tabla.getColumnName(i)).setMinWidth(0);//Ancho minimo de la columna 0
    tabla.getColumn(tabla.getColumnName(i)).setMaxWidth(0);//Ancho maximo de la columna
    }
    } catch (ArrayIndexOutOfBoundsException e) {
    }
    }

Deja un comentario