elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con columnas grupales en un JTable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con columnas grupales en un JTable  (Leído 2,823 veces)
we4rt

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Problema con columnas grupales en un JTable
« en: 17 Mayo 2010, 05:28 am »

Hola buenas!!!

El problema que tengo es: tengo una ventana donde muestro varias tablas, esta tablas se encuentran separadas o distribuidas en distintos tabs de un JTabbedPane, el asunto es que unicamente la tabla que se en el 1° tab me lo muestra como debe ser (si me agrupa las columnas), pero en el resto de tabs no lo hace, pero eso no es todo, al mostrarme la tabla aparece un error (el error es bastante extraño para mi, por lo siguiente: me tira NullPointerException , depure el código para ver el origen de la excepción y resulta que en determinado momento en el método: "getTableCellRendererComponent" de la clase "ColumnGroup" pasa un null en el parámetro del JTable, digamos que para "solucionarlo" metí un try/catch al hacer esto la aplicación no se me cae y me muestra la tabla aparentemente sin problemas, pero lógicamente si los tiene uno es que si intentas reajustar el tamaño de una columna o un grupo de columnas este no lo hace bien, unicamente reajusta el tamaño de la cabecera).

Lo que lo hace más extraño para mi es que, he usado digamos los mismos pasos crear tablas con columnas grupales en otras partes de la aplicación y en esta si me funciona bien, sin ningún tipo de problema incluso no necesite alterar de ninguna manera la clase "ColumnGroup".

Otra cosa es que pude comprobar  que en el modelo de la columna de la tabla si se agregan las columnas grupales...

Pongo un poco del código para mostrar los pasos que estoy usando para "armar la tabla":

Código
  1. private void initTabla(byte tabla){
  2. ColumnGroup total= new ColumnGroup("Cantidad Total");
  3. ColumnGroup setimo= new ColumnGroup("7");
  4. ColumnGroup octavo= new ColumnGroup("8");
  5. ColumnGroup noveno= new ColumnGroup("9");
  6. ColumnGroup decimo= new ColumnGroup("10");
  7. ColumnGroup undecimo= new ColumnGroup("11");
  8.  
  9. MultiLineHeaderRenderer render= new MultiLineHeaderRenderer();
  10.  
  11. ModeloTabla modelo= null;
  12.  
  13. switch(tabla){
  14.      case 1:  /* se encarga de hacer que la tabla "tblCuadro1" tenga columnas grupales*/
  15.  
  16.         modelo= new ModeloTabla(10, new Object[]{
  17.                                              "Edad", "Total", "Hombres", "Mujeres", "Total", "Hombres", "Mujeres"
  18.                                              , "Total", "Hombres", "Mujeres", "Total", "Hombres", "Mujeres"
  19.                                              , "Total", "Hombres", "Mujeres", "Total", "Hombres", "Mujeres"});
  20.  
  21.                        tblCuadro1.setTableHeader(new GroupableTableHeader(
  22.                           ((GroupableTableColumnModel) tblCuadro1.getColumnModel())));
  23.                        tblCuadro1.setModel(modelo);
  24.  
  25.                total.add(tblCuadro1.getColumnModel().getColumn(1));
  26.                total.add(tblCuadro1.getColumnModel().getColumn(2));
  27.                total.add(tblCuadro1.getColumnModel().getColumn(3));
  28.  
  29.                setimo.add(tblCuadro1.getColumnModel().getColumn(4));
  30.                setimo.add(tblCuadro1.getColumnModel().getColumn(5));
  31.                setimo.add(tblCuadro1.getColumnModel().getColumn(6));
  32.  
  33.                octavo.add(tblCuadro1.getColumnModel().getColumn(7));
  34.                octavo.add(tblCuadro1.getColumnModel().getColumn(8));
  35.                octavo.add(tblCuadro1.getColumnModel().getColumn(9));
  36.  
  37.                noveno.add(tblCuadro1.getColumnModel().getColumn(10));
  38.                noveno.add(tblCuadro1.getColumnModel().getColumn(11));
  39.                noveno.add(tblCuadro1.getColumnModel().getColumn(12));
  40.  
  41.                decimo.add(tblCuadro1.getColumnModel().getColumn(13));
  42.                decimo.add(tblCuadro1.getColumnModel().getColumn(14));
  43.                decimo.add(tblCuadro1.getColumnModel().getColumn(15));
  44.  
  45.                undecimo.add(tblCuadro1.getColumnModel().getColumn(16));
  46.                undecimo.add(tblCuadro1.getColumnModel().getColumn(17));
  47.                undecimo.add(tblCuadro1.getColumnModel().getColumn(18));
  48.  
  49.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).addColumnGroup(total);
  50.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).addColumnGroup(setimo);
  51.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).addColumnGroup(octavo);
  52.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).addColumnGroup(noveno);
  53.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).addColumnGroup(decimo);
  54.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).addColumnGroup(undecimo);
  55.  
  56.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).getColumn(2).setPreferredWidth(90);
  57.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).getColumn(5).setPreferredWidth(90);
  58.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).getColumn(8).setPreferredWidth(90);
  59.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).getColumn(11).setPreferredWidth(90);
  60.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).getColumn(14).setPreferredWidth(90);
  61.               ((GroupableTableColumnModel) tblCuadro1.getColumnModel()).getColumn(17).setPreferredWidth(100);
  62.  
  63.                llenarTablas(tabla); // este método llena la tabla
  64.                break;
  65.  
  66.          case 2: /* se encarga de hacer que la tabla "tblCuadro2" tenga columnas grupales*/
  67.  
  68.              modelo= new ModeloTabla(10, new Object[]{
  69.                                        "Edad", "Total", "Hombres", "Mujeres", "Total", "Hombres", "Mujeres"
  70.                                       , "Total", "Hombres", "Mujeres", "Total", "Hombres", "Mujeres"
  71.                                       , "Total", "Hombres", "Mujeres", "Total", "Hombres", "Mujeres"});
  72.  
  73.                tblCuadro2.setTableHeader(new GroupableTableHeader(
  74.                                                           ((GroupableTableColumnModel) tblCuadro2.getColumnModel())));
  75.                tblCuadro2.setModel(modelo);
  76.  
  77.                ColumnGroup totalCuadro2= new ColumnGroup("Cantidad Total");
  78.                ColumnGroup setimoCuadro2= new ColumnGroup("7°");
  79.                ColumnGroup octavoCuadro2= new ColumnGroup("8°");
  80.                ColumnGroup novenoCuadro2= new ColumnGroup("9°");
  81.                ColumnGroup decimoCuadro2= new ColumnGroup("10°");
  82.                ColumnGroup undecimoCuadro2= new ColumnGroup("11°");
  83.  
  84.                totalCuadro2.add(tblCuadro2.getColumnModel().getColumn(1));
  85.                totalCuadro2.add(tblCuadro2.getColumnModel().getColumn(2));
  86.                totalCuadro2.add(tblCuadro2.getColumnModel().getColumn(3));
  87.  
  88.                setimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(4));
  89.                setimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(5));
  90.                setimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(6));
  91.  
  92.                octavoCuadro2.add(tblCuadro2.getColumnModel().getColumn(7));
  93.                octavoCuadro2.add(tblCuadro2.getColumnModel().getColumn(8));
  94.                octavoCuadro2.add(tblCuadro2.getColumnModel().getColumn(9));
  95.  
  96.                novenoCuadro2.add(tblCuadro2.getColumnModel().getColumn(10));
  97.                novenoCuadro2.add(tblCuadro2.getColumnModel().getColumn(11));
  98.                novenoCuadro2.add(tblCuadro2.getColumnModel().getColumn(12));
  99.  
  100.                decimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(13));
  101.                decimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(14));
  102.                decimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(15));
  103.  
  104.                undecimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(16));
  105.                undecimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(17));
  106.                undecimoCuadro2.add(tblCuadro2.getColumnModel().getColumn(18));
  107.  
  108.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).addColumnGroup(totalCuadro2);
  109.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).addColumnGroup(setimoCuadro2);
  110.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).addColumnGroup(octavoCuadro2);
  111.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).addColumnGroup(novenoCuadro2);
  112.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).addColumnGroup(decimoCuadro2);
  113.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).addColumnGroup(undecimoCuadro2);
  114.  
  115.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).getColumn(2).setPreferredWidth(90);
  116.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).getColumn(5).setPreferredWidth(90);
  117.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).getColumn(8).setPreferredWidth(90);
  118.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).getColumn(11).setPreferredWidth(90);
  119.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).getColumn(14).setPreferredWidth(90);
  120.                ((GroupableTableColumnModel) tblCuadro2.getColumnModel()).getColumn(17).setPreferredWidth(130);
  121.  
  122.                llenarTablas(tabla); // este método llena la tabla
  123.                break;
  124.    }
  125. }
  126.  

Realmente no se donde estará mi error, por que como dije anteriormente he usado los mismos "pasos" en otras partes de la aplicación y hay si todo  funciona bien, supongo que el error debe ser algo tonto pero como lo le estado dando vueltas al asunto no lo puedo visualizar, ojala me puedan dar una mano.

Ah bueno comento que en las demás tablas si me salen las tablas y con los datos correspondientes, solo que no salen las cabeceras para visualizar que se han agrupado las columnas y también presentan el mismo problema del reajuste del tamaño de la columna.

No se si me di a entender bien, me disculpan sino y me dicen por favor, realmente me interesa arreglar esto.

Para usar las columnas grupales utilizo el código que fue publicado en el siguiente enlace: http://www.swebb99.f2s.com/GroupableHeader/

Que tengan buen día o noche y gracias de antemano!!!


« Última modificación: 18 Mayo 2010, 00:20 am por we4rt » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema Con Selección De Fila En Jtable Y Evento « 1 2 »
Java
ZedGe 12 14,914 Último mensaje 24 Noviembre 2011, 18:57 pm
por Leyer
JTable no muestra los nombres de cada una de las columnas
Java
MC.cover 3 7,088 Último mensaje 5 Octubre 2015, 21:23 pm
por LaThortilla (Effort)
Filtrar datos en Jtable de 3 columnas
Java
soy_nicanor 2 3,500 Último mensaje 8 Octubre 2016, 19:02 pm
por soy_nicanor
Facebook prueba las llamadas de voz grupales en su chat web y la eliminación ...
Noticias
wolfbcn 0 1,306 Último mensaje 18 Diciembre 2016, 14:08 pm
por wolfbcn
agregar variables a columnas de jtable
Java
soy_nicanor 0 2,528 Último mensaje 4 Marzo 2017, 14:45 pm
por soy_nicanor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines