style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Insertar Jtable en Jframe

Buenas:
Quiero ver la tabla completa "dibujada" en JFrame y sólo consigo ver el cuerpo de la tabla con los datos
pero no consigo ver el encabezamiento,o sea las columnas.
Agradecería comentarios.

Tengo el siguiente modelo de tabla.
import javax.swing.table.AbstractTableModel;

/**
*
* @author Enric
*/
public class MyTableModel extends AbstractTableModel {
//Array de los objetos con los datos de la tabla en vez de Strings ,int
final Object [][] data ={
{"Mary" ,"Campones" ,"Esquiar",new Integer(5),new Boolean(false) },
{"Lucas" ,"Hum" ,"Patinar",new Integer(3),new Boolean(true) },
{"Katia" ,"walth" ,"Escalar",new Integer(2),new Boolean(false) },
{"Marcus","Andrews" ,"Correr" ,new Integer(7),new Boolean(true) },
{"Angela","Laith" ,"Nadar" ,new Integer(4),new Boolean(false) }
};
//Array con los encabezamientos de las columnas
final String [] columnNames ={
"Nombre","Apellido","Pasatiempo","Años practica","Soltero/a"
};
//Numero de elementos de array de datos
@Override
public int getRowCount() {
return data.length;

}
//Numero de columnas
@Override
public int getColumnCount() {
return columnNames.length;

}
//retorno del elemento indicado
public String getColumnName(int col){
return columnNames[col];

}
//retorno de celdas
@Override
public Object getValueAt(int row, int col) {

return data[row][col];

}

//Editor predeterminado para cada celda
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}
//Celdas Editables
public boolean isCellEditable(int row,int col){
return true;
}

//Datos tabla cambian
public void setValueAt(Object value,int row,int col){
data[row][col]=value;
fireTableCellUpdated(row,col);
}

void addColumn(String columnName) {

}
}
Y el siguiente programa para visualizar la tabla en un JFrame
Además de tabla pondré botones,labels y jtextfields,pero primero es la tabla..

package tabla_en_jpanel;

import java.awt.*;

import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

/**
*
* @author Enric
*/
public class Tabla extends JFrame implements ActionListener{
//Crear el modelo de tabla
MyTableModel MiModelo = new MyTableModel();
//crear la tabla con el modelo MyModel
JTable tabla = new JTable(MiModelo);
//JscrollPane paRA LA TABLA
JScrollPane scrollPane = new JScrollPane(tabla);

public Tabla(){

//Panel contenedor
JFrame jFM = new JFrame("Panel");
jFM.setLayout(null);

//Definir el tamaño
tabla.setPreferredScrollableViewportSize(new Dimension (500,70));

//Agregar scrollPane a la tabla
getContentPane().add(scrollPane,BorderLayout.CENTER);

tabla.setBounds(20, 250, 600, 500);
//Añadir los componentes
jFM.add(tabla);
jFM.setLocation(100, 50);
jFM.setResizable(false);
jFM.setVisible(true);
jFM.setSize(800, 600);

}

public static void main(String[]args){
Tabla tabla = new Tabla();

}

@Override
public void actionPerformed(ActionEvent ae) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">