JTable in JInternalFrame

Pessoal como faço para colocar um JTable em um
JInternalFrame
fiz assim mais ai num abre a janela

import javax.swing.border.TitledBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.BorderFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.text.MaskFormatter;
import java.sql.*;
class Funcionario extends JInternalFrame implements ActionListener
 {
	 ResultSet res;
	 DefaultTableModel modelo;
     JTable tabela;
      JScrollPane newScroll;
	 JLabel lrecebenome, lcpf;
	 JFormattedTextField tcpf;
	 JTextField  nome;
	 JButton bentrada, bsaida;
	 JPanel pcentro, pnort;
	 JInternalFrame framefuncionario;
	 SimpleDateFormat formatoData, formatohora;
	 Date dataAtual, horaatual;
	 String dataAtual1 , horaatual1;
	 int linhaselecionada;
	 Conectando cone;
	 public Funcionario()
	  {
		  //Jtextfield
		  nome = new JTextField();
		  nome.setFont(new Font("Arial",1,16));
          nome.setBounds(350,30,300,20);
          nome.setForeground(Color.BLUE);
          nome.setEditable(false);

          //JLabel
		  lcpf = new JLabel("C.P.F.");
		  lcpf.setFont(new Font("Arial",1,18));
		  lcpf.setBounds(20,20,100,40);

		  //JButton's
		  bentrada = new JButton("Entrada");
		  bentrada.setBounds(400,120,80,40);
		  bentrada.addActionListener(this);

		  bsaida = new JButton("Saida");
		  bsaida.setBounds(500, 120, 80, 40);
		  bsaida.addActionListener(this);

		  //JFormattedTextField
		  try
		   {
			   tcpf = new JFormattedTextField(new MaskFormatter("###.###.###-##"));
			   tcpf.setBounds(120,30,140,20);
			   tcpf.setFont(new Font("Verdana",1,14));
		   }
		  catch(java.text.ParseException erro)
		   {
		   }
		  //JPanel's
		  pcentro = new JPanel();
		  pcentro.setLayout(null);

		  pnort = new JPanel();


		  //JInternalFrame
		  framefuncionario = new JInternalFrame("Entrada e Saida de Funcionario", true, true, true, true);
          framefuncionario.pack();
          framefuncionario.setSize(670,380);
          framefuncionario.setVisible(true);
          setLocation(200,200);
          //Cadastra no painel
          pcentro.add(lcpf);
          pcentro.add(tcpf);
          pcentro.add(nome);
          pcentro.add(bentrada);
          pcentro.add(bsaida);
         //Painel sul Tabela




          //configura data
          dataAtual = new Date();
          formatoData = new SimpleDateFormat ("dd/MM/yyyy");
          dataAtual1 = formatoData.format(dataAtual);

          //configura hora
          horaatual = new Date();
          formatohora = new SimpleDateFormat ("HH:mm:ss");
          horaatual1 = formatohora.format(horaatual);

            //Tabela
	     try
               {
	               Conectando cone = new Conectando();
                   cone.MeuState = cone.MinhaConexao.createStatement();
                    res = cone.MeuState.executeQuery("SELECT dbcpf, dbnome, dbdata, dbhoraentrada, " +
                   "dbhorasaida, dbhoratotal");
                   cone.MeuState.close();
               }
              catch (SQLException ex)
               {
                   ex.printStackTrace();

               }


              try
               {
              Vector linhas = new Vector();
			  Vector colunas = new Vector();
			  ResultSetMetaData rsmd = res.getMetaData();
			  colunas.addElement("C.P.F.");
			  colunas.addElement("Nome");
			  colunas.addElement("Data");
			  colunas.addElement("Hora Entrada");
			  colunas.addElement("Hora Saida");
			  colunas.addElement("Total de Horas");

             do
			  {
				 linhas.addElement(fazerLinha(res,rsmd));
			  }
			 while( res.next() );
             modelo = new DefaultTableModel(linhas,colunas);
             tabela = new JTable(modelo);
			tabela.getColumnModel().getColumn(0).setPreferredWidth(25);
			tabela.getColumnModel().getColumn(1).setPreferredWidth(320);
			tabela.getColumnModel().getColumn(2).setPreferredWidth(15);
			tabela.getColumnModel().getColumn(3).setPreferredWidth(50);

			tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			ListSelectionModel LSMlinhaSel = tabela.getSelectionModel();

			LSMlinhaSel.addListSelectionListener( new ListSelectionListener()
			{
				public void valueChanged( ListSelectionEvent e)
				{
					ListSelectionModel LSMsel = (ListSelectionModel)e.getSource();

					linhaselecionada = LSMsel.getMinSelectionIndex();
				}
			}
			);

			newScroll = new JScrollPane(tabela);
			newScroll.setPreferredSize(new java.awt.Dimension(480,370));
			pnort.add(newScroll);
			pnort.setVisible(true);
			pnort.setSize(800,400);

			validate();
			cone.MeuState.close();
		}
		catch(SQLException sqe)
		{
			JOptionPane.showMessageDialog(null,"Erro ao projetar Tabela","Criar Tabela",JOptionPane.ERROR_MESSAGE);
		}
    }

   	private Vector fazerLinha(ResultSet res,ResultSetMetaData resmd)
	{
		Vector LinhaAtual = new Vector();
		try
		{
			for( int i = 1; i <= resmd.getColumnCount();  ++i)
			switch(resmd.getColumnType(i))
			{
				case Types.VARCHAR:
					LinhaAtual.addElement( res.getString(i) );
					break;
				case Types.TIMESTAMP:
					LinhaAtual.addElement( res.getDate(i) );
					break;
				case Types.INTEGER:
					LinhaAtual.addElement( new Long( res.getLong(i) ) );
					break;
			}
		}
		catch(SQLException sqe)
		{
			JOptionPane.showMessageDialog(null,"Erro ao construir Linha","Tabela",JOptionPane.ERROR_MESSAGE);
		}
		return LinhaAtual;
	}
    public void actionPerformed(ActionEvent e)
     {
	     Conectando conectiva = new Conectando();
	     if(e.getSource()==bentrada)
	      {

		      try{
		       String query = "SELECT  dbcpf, dbnome FROM TBMotorista "+
			  "WHERE dbcpf = '" +
			   tcpf.getText() + "'";
			   ResultSet rs = conectiva.MeuState.executeQuery(query);
			   rs.next();
			   nome.setText(rs.getString("dbnome"));
		       }
		      catch(SQLException er)
		       {
			       JOptionPane.showMessageDialog(null,"Cpf Invalido");
		       }
			   if(!nome.getText().equals(""))
			   {

		      try
		       {
			       String sql= "INSERT INTO TBEntrada (dbcategoria, "+
			       "dbcpf, dbnome, dbdata, dbhoraentrada, "+
			       "dbhorasaida, dbhoratotal ) Values(";
			       sql = sql + "'Funcionario',";
			       sql = sql + "'" + tcpf.getText()+"', ";
			       sql = sql + "'" + nome.getText() + "', ";
			       sql = sql + "'" + dataAtual1 + "', ";
			       sql = sql + "'" + horaatual1 + "', ";
			       sql = sql + "null,";
			       sql = sql + "null )";
			       conectiva.MeuState.executeUpdate(sql);
		       }
		      catch(SQLException ex)
			   {
			      if(ex.getMessage().equals("General error"))
				   JOptionPane.showMessageDialog(null,"Veiculo já Cadastrado");
				  else
				   JOptionPane.showMessageDialog(null,"Dado(s) invalido(s)"+ex);
			   }

	          }
	         else
	          {
		         JOptionPane.showMessageDialog(null,"Cpf Invalido!");
		      }
         }
        if(e.getSource()==bsaida)
         {
	         if(!tcpf.getText().equals(""))
	          {
		          try
		           {
			           String sql = "UPDATE TBEntrada SET "+
			           "dbhorasaida= '" + horaatual1+ "' "+
			           "WHERE dbcpf = '"+ tcpf.getText() +"'" + " And dbhorasaida IS NULL ";
			           int rs = conectiva.MeuState.executeUpdate(sql);
			           System.out.println(sql);
		           }
		          catch(SQLException erro)
		           {
			           JOptionPane.showMessageDialog(null,"Nao Foi possivel fazer a gravação
"+erro);
		           }
	          }
	         else
	          {
		          JOptionPane.showMessageDialog(null,"Digite o CPF!");
	          }
          }

     }

 }

aqui esta aonde visualiza a internalframe

if(e.getSource()==mientradaesaidadiversos)
           {
	           Funcionario func = new Funcionario();
	           func.framefuncionario.pack();
	           func.framefuncionario.setSize(800,600);
	           func.framefuncionario.setVisible(true);
	           container = func.framefuncionario.getContentPane();
	           container.add(func.pcentro, BorderLayout.CENTER);
	           container.add(func.pnort, BorderLayout.SOUTH);
	           theDesktop.add(func.framefuncionario);
           }