Evidentemente c'è dell'altro e presumibilmente è concentrato sull'uso dei LayoutManager (che qui non si capisce come sia).
Questo codice funziona alla perfezione:

codice:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class TBHeader extends JFrame {

   public TBHeader() {
      Container c = getContentPane();
      c.setLayout( new BorderLayout() );

      String[] intestazione = {"Colonna1", "Colonna2"};
      String[][] content = {{"Riga1, cella1", "Riga1, Cella2"},
                            {"Riga2, cella1", "Riga2, Cella2"},
                            {"Riga3, cella1", "Riga3, Cella2"}};

      DefaultTableModel model = new DefaultTableModel(content, intestazione);
      JTable table = new JTable( model );
      JTableHeader header = table.getTableHeader();
      header.setPreferredSize( new Dimension(0, 120) );
      table.setRowHeight( 50 );

      c.add(header, BorderLayout.NORTH);
      c.add(table, BorderLayout.CENTER);

      setSize(800, 600);
      setTitle("Altezza TableHeader");
      setDefaultCloseOperation( EXIT_ON_CLOSE );
      setLocationRelativeTo( null );
      setVisible( true );
   }

   public static void main(String[] args) {
      TBHeader tbh = new TBHeader();
   }
}
PS: se non ci sono particolari esigenze, solitamente si inserisce la JTable in uno JScrollPane, il quale si occupa da solo di visualizzare la JTableHeader, senza doverla aggiungere a parte.


Ciao.