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);