Dimensões de um jFrame

Bom dia, estou com um problema que está já alguns dias me causando dor de cabeça, pesquisei pelo google porém não achei nada que pudesse me ajudar. É o seguinte, eu tenho um jFrame, dentro dele um jScrollPane, e dentro dele um JtabbedPane, dentro dele um jPanel para cada aba. Acontece que, possuo 11 abas diferentes no jTabbedPane, e umas tem mais informações que outras, porém quando estou nas abas que possuem menor conteúdo, acaba sobrando um espaço cinza abaixo que é desnecessário, que eu não gostaria que aparecesse, ou seja gostaria de ajustar as dimensões de acordo com a aba selecionada. Já tentei setar todas as dimensões, de várias maneiras e combinações diferentes, porém sem sucesso. Alguém já passou por um problema parecido ou saiba como solucionar ?

Sim, mas redimensionar o JFrame não é a melhor opção pois isso causaria um problema de usabilidade. O ideal seria preencher aquele espaço com algum conteúdo, poderia juntar algumas abas ou retirar essas abas e colocar num JDialog acessível por menu ou botão.

   final JFrame f = new JFrame();
   final JTabbedPane tabbedPane = new JTabbedPane();
   
   // TESTE, o content é o conteúdo.
   JPanel[] content = {new JPanel(), new JPanel()};
   content[0].setPreferredSize(new Dimension(400, 400)); // adiciona um tamanho
   content[1].setPreferredSize(new Dimension(200, 200)); // adiciona um tamanho
   
   int N = content.length;
   JPanel[] holders = new JPanel[N];
   for (int i = 0; i < N; i++) {
       holders[i] = new JPanel();
       holders[i].add(content[i]);
       tabbedPane.addTab("" + i, holders[i]);
   }
   
   tabbedPane.addChangeListener(e->{
       Dimension d = new Dimension(0,0);
       for (int i = 0; i < N; i++) {
           if (i != tabbedPane.getSelectedIndex()) {
               holders[i].setPreferredSize(d);
           } else {
               holders[i].setPreferredSize(content[i].getPreferredSize());
           }
       }
       f.pack();
   });
   f.add(tabbedPane);
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   f.pack();
   f.setVisible(true);