Problema JInternalFrame e JTable juntas

Olá!
Alguém sabe uma solução para este problema?
Tenho uma tabela e nela defino o tamanho das colunas de acordo com o tamanho dos dados. Acontece que o cabeçalho da tabela funciona bem quando está num JFrame, mas se perde quando está em um JInternalFrame.
Não consigo entender porque isso acontece.
Segue o código. Substituindo JFrame por JInternalFrame já não funciona.

[code]import java.awt.*;

import javax.swing.;
import javax.swing.table.
;

public class Class1 extends JFrame{
private JTable tbl = null;
private JScrollPane scroll = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);

public Class1() {
    Object[] cabecalho = new Object[]{"M","MT","CU"};
    Object[][] dados = new Object[][]{{"1","2","3"},{"2","3","4"},{"3","5","4"}};
    
    tbl = new JTable(dados, cabecalho){
                        public boolean isCellEditable(int rowIndex, int attrIndex)
                        {
                            return false;
                        }
                    };
    tbl.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    packColumns(tbl,0);

    scroll.setPreferredSize(new Dimension(150,90));

    scroll.getViewport().add(tbl);


    getContentPane().setLayout(new BorderLayout());

    getContentPane().add(scroll, BorderLayout.CENTER);


    setVisible(true);
    setSize(200,200);

    
}
    
public void packColumns(JTable table, int margin) {
    for (int c = 0; c < table.getColumnCount(); c++) {
        packColumn(table, c, margin);
    }
}


/**
 * Ajusta a largura preferida da coluna visível especificada pelo vColIndex.
 * A coluna será larga o bastante para mostrar o cabeçalho da coluna e a
 * célula de maior conteúdo.
 * 
 * @param table
 * @param vColIndex
 * @param margin
 */
public void packColumn(JTable table, int vColIndex, int margin) {
    DefaultTableColumnModel colModel =
        (DefaultTableColumnModel)table.getColumnModel();
    TableColumn col = colModel.getColumn(vColIndex);
    int width = 0;

    // ObtÈm a largura do cabeÁalho da coluna
    TableCellRenderer renderer = col.getHeaderRenderer();
    if (renderer == null) {
        renderer = table.getTableHeader().getDefaultRenderer();
    }
    
    Component comp =
            renderer.getTableCellRendererComponent(table, col.getHeaderValue(),
                                                   false, false, 0,vColIndex);
                                                   
    width = comp.getPreferredSize().width;

    // ObtÈm a largura maxima da coluna de dados
    for (int r = 0; r < table.getRowCount(); r++) {
        renderer = table.getCellRenderer(r, vColIndex);
        comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, vColIndex),
                                   false, false, r, vColIndex);

        width = Math.max(width, comp.getPreferredSize().width);
    }

    //width += 2 * margin;

    // Configura a largura
    col.setPreferredWidth(width);
}

public static void main (String[] args){
    new Class1();
}

}
[/code]

Alguém conseguiu simular o erro? Alguma idéia do que pode ser?