Foros del Web » Programación para mayores de 30 ;) » Java »

Ocultar columnas en JTable

Estas en el tema de Ocultar columnas en JTable en el foro de Java en Foros del Web. Hola, espero que me podais ayudar, seguro que sí. El caso es que estoy usando un JTable con un DefautTableModel con numRows y numColums, esta ...
  #1 (permalink)  
Antiguo 17/07/2009, 02:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 6 meses
Puntos: 0
Ocultar columnas en JTable

Hola, espero que me podais ayudar, seguro que sí.

El caso es que estoy usando un JTable con un DefautTableModel con numRows y numColums, esta definición:
Código java:
Ver original
  1. JTable table=new JTable(numRows,numColums);
  2. table.setModel(dataModel);

La tabla se ve bien, y lo que quería hacer ahora era poder ocultar alguna columna seleccionada por el usuario.

Por ejemplo, darle unos checks con numeros, y según los que seleccione mostrar u ocultar las columnas.

Llevo tiempo rayándome y no veo la opción de mostrar u ocultar una columna. Obviamente no quiero perder la información y eliminar la columna para siempre.

Gracias y un saludo!
  #2 (permalink)  
Antiguo 17/07/2009, 10:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Ocultar columnas en JTable

Hola:

No hay forma automática de mostrar u ocultar las columnas. Hay varias opciones, pero una que se me ocurre es la siguiente.

Hereda de DefaultTableModel y sobreescribe los método getColumnCount(), getColumnName() y getValueAt(). También setValueAt() si se permite editar en el JTable.

Debes escribir esos métodos de forma que tengan en cuenta qué columnas son o no visibles, de forma que getColumnCount() debe devolver el número de visibles, getColumnName() el nombre de la columna teniendo en cuenta que hay que saltarse las invisibles, getValueAt() el valor de la celda correspondiente, saltándose las columnas invisibles, etc.

Tocando esos checks que comentas para ocultar columnas, debes indicarle a tu clase hija de DefaultTableModel cuales son o no invisibles, para que pueda devolver en cada métodos los valores correctos.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 20/07/2009, 04:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Ocultar columnas en JTable

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

No hay forma automática de mostrar u ocultar las columnas. Hay varias opciones, pero una que se me ocurre es la siguiente.

Hereda de DefaultTableModel y sobreescribe los método getColumnCount(), getColumnName() y getValueAt(). También setValueAt() si se permite editar en el JTable.

Debes escribir esos métodos de forma que tengan en cuenta qué columnas son o no visibles, de forma que getColumnCount() debe devolver el número de visibles, getColumnName() el nombre de la columna teniendo en cuenta que hay que saltarse las invisibles, getValueAt() el valor de la celda correspondiente, saltándose las columnas invisibles, etc.

Tocando esos checks que comentas para ocultar columnas, debes indicarle a tu clase hija de DefaultTableModel cuales son o no invisibles, para que pueda devolver en cada métodos los valores correctos.

Se bueno.
Pues no soy capaz de hacerlo.

En primer lugar, yo le pongo un DefaultTableModel porque los datos los cargo yo. Todos los datos.

Supongo que tendria que cambiar luego el TableModel al nuevo este que creo yo, pero no lo veo claro. en el getValueAt() tendría que hacer yo bastantes calculos en funcion de las columnas visibles o no visibles no.

Otro método de hacerlo se te ocurre? Gracias
  #4 (permalink)  
Antiguo 20/07/2009, 07:29
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Ocultar columnas en JTable

Buenas:

Tienes que heredar de DefaultTableModel con lo que te he indicado y usar ese modelo nuevo, no el antiguo DefaultTableModel. Por supuesto, tienes que echar cuentas en según que columnas quieres que se vean o no. En getValueAt(), si te dicen columna 3, tienes que devolver el valor de la cuarta columna visible (los indices empiezan en cero).

Si no quieres echar esas cuentas, tendrás que tener dos DefaultTableModel. Uno con todos los datos fuera de la tabla y otro que rellenes cada vez que alguien oculte una columna sólo con las columnas visibles. Este nuevo modelo debes pasárselo al jtable cada vez que haya cambios.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 29/04/2011, 07:14
Avatar de ryor310575  
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Ocultar columnas en JTable

Este post es viejo y supongo que es algo facil, aca coloco un metodo que encontre:

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(co lumna[i]).setMaxWidth(0);
tbl.getTableHeader().getColumnModel().getColumn(co lumna[i]).setMinWidth(0);
}
}
  #6 (permalink)  
Antiguo 11/05/2011, 10:19
 
Fecha de Ingreso: febrero-2009
Mensajes: 6
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ocultar columnas en JTable

tablaUsuarios.setModel(managerUsuario.llenarTabla( jTable1));
TableColumn columna = tablaUsuarios.getColumnModel().getColumn(0);
columna.setMaxWidth(0);
columna.setMinWidth(0);
columna.setPreferredWidth(0);
tablaUsuarios.doLayout();
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:16.