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
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
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 😀
Yo le pongo todos los parametros de ancho en 0 y me queda una columna pequeñita pero aun visible… que estoy haciendo mal?
gracias, ,me ha sido de ayuda!!
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) {
}
}
GRACIAS!!
Era tan sencillo pero no daba con la solución