The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

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);
    }
}
Anuncios

6 Respuestas a “Código Java – Ocultar Columnas de un JTable

  1. Danny febrero 22, 2013 en 1:03 pm

    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. Anónimo julio 2, 2012 en 6:32 am

    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 :D

  3. Rodrigo Bertoa abril 27, 2012 en 5:19 am

    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. Anónimo febrero 22, 2012 en 1:52 am

    gracias, ,me ha sido de ayuda!!

  5. linuxerito octubre 17, 2011 en 5:26 pm

    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) {
    }
    }

  6. bagl octubre 2, 2011 en 5:08 pm

    GRACIAS!!
    Era tan sencillo pero no daba con la solución

No te quedes callado. Pregunta, Comenta, Comparte, Sígueme, Suscríbete, Déjame tu opinión... Soy Beastieux Zeroo...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: