JTable y header

Eowyn
30 de Enero del 2004
Hola!. ¿Cómo puedo hacer que una JTable muestre el encabezado que yo quiera?. Estoy usando un DefaultTableModel para crear el tamaño de la tabla que yo quiero, y luego poder modificarla.

El problema es que uso un array de Strings con el nombre del encabezado de cada columna para decirle cuántas columnas quiero y, aunque toma bien el valor, luego no aparece el encabezado de las columnas :'(.

Mi código es este:

Object[] nombres = {"A", "B", "C", "Total"};
DefaultTableModel dtm = new DefaultTableModel(nombres, 10);
jTable1 = new JTable(dtm);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(120);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(80);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(70);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);

Muchas gracias por la ayuda!!.

Mabrev
30 de Enero del 2004
Hola:

Si no consigues que funcione lo del scroll, puedes probar añadiendo la cabecera y la tabla por separado en un panel (con Layout = BorderLayout)

panel.add(tabla.getTableHeader(), BorderLayout.NORTH);
panel.add(tabla, BorderLayout.CENTER);

Espero que te sirva.

Saludos

mytrol
30 de Enero del 2004
Usa este constructor:
public JTable ( Object InfoCel[][], Object NombreCol[] )

Hazlo de la siguiente manera:

Object InfoCel[][] =
{
{"Celda 1,1", "Celda 1,2", "Celda 1,3"},
{"Celda 2,1", "Celda 2,2", "Celda 2,3"}
};
Object columnNames[] =
{
"A", "B", "C", "Total"
};
JTable table = new JTable(rowData, columnNames);

eldrum
30 de Enero del 2004
prueba a añadir jTable a traves de un JScrollPane, eso es, que en lugar de add(jTable1) usa add(new JScrollPane(jTable1))

Eowyn
30 de Enero del 2004
Ná, sigue sin funcionar... :(. Ya el propio JPanel y el JFrame en el que esta se redimensionan si hago cambios en el diseño de la JTable.

Quizas una solucion es definir una clase heredada de AbstractTableModel, pero no sé cómo se almacenan ahí los valores que quieres mostrar en la JTable.

Gracias!!!.

amartinez
30 de Enero del 2004
Lo que psa es que tiene se estar seguro que el JTable quede al interior de un JScrollPane, y no el JPanel, yo trabajo con NEtBeans y es mucha mas facíl.