Dúvidas em como usar o JTabbedPane

Olá, tenho a seguinte dúvida (sou iniciante em java)
estou construindo um programa de orçamentos, porém gostaria de criar várias abas, pesquisei na net e achei a classe JTabbedPane que faz isso, mais quando sigo o que consta no site da oracle ele está sobrepondo as abas não ficando uma do lado da outra, ou eu acho que é isso que está acontecendo veja por favor:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.*;

import javax.swing.JTabbedPane;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;


public class ProgramaTcc extends JFrame implements ActionListener {


/**
 * Create the panel.
 */
public ProgramaTcc() {
	
	setTitle("Orçamento TCC");
			
	 // Cria uma barra de menu para o JFrame
	JMenuBar menuBar = new JMenuBar();
	
	// Adiciona a barra de menu ao  frame
	setJMenuBar(menuBar);
	
	 // Define e adiciona dois menus drop down na barra de menus
	JMenu arquivoMenu = new JMenu("Arquivo");
	menuBar.add(arquivoMenu);
	
	 // Cria e adiciona um item simples para o menu
	JMenuItem novoAction = new JMenuItem("Novo");
	JMenuItem abrirAction = new JMenuItem("Abrir");
	JMenuItem salvarAction = new JMenuItem("Salvar");
	JMenuItem salvarComoAction = new JMenuItem("Salvar Como");
	JMenuItem fecharAction = new JMenuItem("Fechar");
	
	arquivoMenu.add(novoAction);
	arquivoMenu.add(abrirAction);
	arquivoMenu.add(salvarAction);
	arquivoMenu.add(salvarComoAction);
	arquivoMenu.add(fecharAction);
	
	JTabbedPane tabbedPane = new JTabbedPane();
	
	JComponent cadastroPanel1 = makeTextPanel("Panel1");
	tabbedPane.addTab("Cadastro", cadastroPanel1);
	tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
	
	JComponent orcamentoPanel2 = makeTextPanel("Panel2");
	tabbedPane.addTab("Orçamento", orcamentoPanel2);
	tabbedPane.setMnemonicAt(1,  KeyEvent.VK_2);
	
	JComponent custosPanel3 = makeTextPanel("Panel3");
	custosPanel3.setPreferredSize(new Dimension(410, 50));
	tabbedPane.addTab("Custos", custosPanel3);
	tabbedPane.setMnemonicAt(2,  KeyEvent.VK_3);
	
	add(tabbedPane);
	
	
	tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
	
	

}

protected JComponent makeTextPanel(String text) {
	JPanel panel = new JPanel(false);
	JLabel filler = new JLabel(text);
	filler.setHorizontalAlignment(JLabel.CENTER);
	panel.setLayout(new GridLayout(1, 1));
	panel.add(filler);
	return panel;
}

@Override
public void actionPerformed(ActionEvent e) {
	// TODO Auto-generated method stub
	
}

}

Cara, você está usando os JTabbedPane da forma certa.
Até executei sua janela através do programa abaixo funcionou perfeitamente.

public class Teste {

	public static void main(String[] args) {
		try {
			ProgramaTcc programa = new ProgramaTcc();
			programa.setDefaultCloseOperation(ProgramaTcc.EXIT_ON_CLOSE);
			programa.setVisible(true);
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}
}