Barra de rolagem em JTabbedPane

Pessoal,
to tentando colocar uma barra de rolagem em um JTabbedPane, que usa JFrame como base. Quero que ao diminuir o tamanho da janela, apareça a barra de rolagem. Já tentei de várias formas mas não to conseguindo. Já usei JScrollPane, JScrollBar e nada…

EDIT: criei esse exemplo simples. Estou usando o Eclipse Galileo…

[code]public class BarraDeRolagem extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel jPanel = null;
private JLabel jLabel = null;
private JTextArea jTextArea = null;
private JButton jButton = null;
private JScrollPane jScrollPane = null;
private JTabbedPane jTabbedPane = null;

private JPanel getJContentPane() {
	if (jContentPane == null) {
		jContentPane = new JPanel();
		jContentPane.setLayout(new BorderLayout());
		jContentPane.add(getJTabbedPane(), BorderLayout.CENTER);
	}
	return jContentPane;
}


private JPanel getJPanel() {
	if (jPanel == null) {
		jLabel = new JLabel();
		jLabel.setBounds(new Rectangle(40, 31, 43, 15));
		jLabel.setText("JLabel");
		jPanel = new JPanel();
		jPanel.setLayout(null);
		jPanel.setPreferredSize(new Dimension(50, 50));
		jPanel.setAutoscrolls(true);
		jPanel.add(jLabel, null);
		jPanel.add(getJTextArea(), null);
		jPanel.add(getJButton(), null);
	}
	return jPanel;
}


private JTextArea getJTextArea() {
	if (jTextArea == null) {
		jTextArea = new JTextArea();
		jTextArea.setBounds(new Rectangle(38, 66, 265, 134));
	}
	return jTextArea;
}


private JButton getJButton() {
	if (jButton == null) {
		jButton = new JButton();
		jButton.setBounds(new Rectangle(159, 223, 81, 23));
	}
	return jButton;
}


private JScrollPane getJScrollPane() {
	if (jScrollPane == null) {
		jScrollPane = new JScrollPane();
		jScrollPane.setViewportView(getJPanel());
	}
	return jScrollPane;
}


private JTabbedPane getJTabbedPane() {
	if (jTabbedPane == null) {
		jTabbedPane = new JTabbedPane();
		jTabbedPane.addTab(null, null, getJScrollPane(), null);
	}
	return jTabbedPane;
}

public static void main(String[] args) {
	
	SwingUtilities.invokeLater(new Runnable() {
		public void run() {
			BarraDeRolagem thisClass = new BarraDeRolagem();
			thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			thisClass.setVisible(true);
		}
	});
}


public BarraDeRolagem() {
	super();
	initialize();
}

private void initialize() {
	this.setSize(548, 315);
	this.setResizable(true);
	this.setContentPane(getJContentPane());
	this.setTitle("JFrame");
	this.setVisible(true);
}

}[/code]

Imagino que o caminho seja criar um JPanel com o conteúdo da aba e colocá-la dentro de um JScrollPane para então adicionar uma aba com o JScrollPane dentro.

Qualquer coisa posta a parte do código que está dando erro que agente tenta ajudar.

Você também deve definir o preferredSize do painel para o tamanho mínimo que ele deve ter antes de aparecer a rolagem. Caso contrário, fica difícil o Java saber quando a barra deve ou não aparecer.

[quote=Eric Yuzo]Imagino que o caminho seja criar um JPanel com o conteúdo da aba e colocá-la dentro de um JScrollPane para então adicionar uma aba com o JScrollPane dentro.

Qualquer coisa posta a parte do código que está dando erro que agente tenta ajudar.[/quote]

Fiz de acordo com o que vc disse, mas ainda não mostra a barra.

O preferredSize já está definido…

O preferred size deve ser maior do a área visível do seu frame, caso contrário o scroll não vai aparecer.

Por exemplo, se o content pane do frame tiver um size de 800,600 e o preferred size de seu panel for de 400,300 o scroll não vai aparecer, pois o panel cabe confortavelmente dentro do frame.

Para fazer a barra aparecer permanentemente, use o scrollbar policy:

scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Assim a barra aparecerá de qualquer forma, mas para permitir a rolagem o preferred size do panel interno deve ser maior que a área visível.

Era o preferredSize mesmo, ele tava menor do que o Content Frame.
Valeu pessoal!
:smiley: