Como criar abas em interface grafica

ai galera to criando uma interface grafica que apenas uma classe de um trabalho de aula, sei que tem como criar abas sobre uma janela principal, tentei fazer mas não consegui, então fiz como sabia, mas para melhorar a visualização da interface queria desme,brar ela em abas… segue em anexo código…e se algu´m puder me dar umas dicas de como melhorar este código aceito…

este é o coddigo que já implementei:
import java.awt.;
import java.awt.event.
;

import javax.swing.*;

public class InterfaceGrafica extends JFrame {

// Criação dos Objetos
private JLabel nomeProjeto = new JLabel(“Nome do Projeto:”);
private JLabel tipoProgramador = new JLabel(“Tipo Programador:”);
private JLabel modulo = new JLabel(“Módulo:”);
private JTextField JTextField1 = new JTextField("");
private JTextField JTextField2 = new JTextField("");
private JTextField JTextField3 = new JTextField("");
private JTextField JTextField4 = new JTextField("");
private JTextField JTextField5 = new JTextField("");
private JLabel numeroModulo = new JLabel(“Número”);
private JLabel dataModulo = new JLabel(“Horas Efetivas”);
private JLabel confidencialModulo = new JLabel(“Confidencialidade”);
private JLabel tempoProjeto = new JLabel(“Tempo Projeto:”);
private JTextField JTextField6 = new JTextField("");
private JLabel adicionar = new JLabel(“ADICIONAR PROJETO”);
private JButton botaoAdicionar = new JButton(“Adicionar”);
private JLabel adicionarMod = new JLabel(“ADICIONAR MÓDULO”);
private JButton botaoModulo = new JButton(“Adicionar”);
private JLabel numModProjeto = new JLabel(“Numero Módulo:”);
private JTextField JTextField7 = new JTextField("");
private JLabel pesquisaProj = new JLabel(“PESQUISA PROJETO”);
private JLabel pesquisaModulo = new JLabel(“PESQUISA MODULO”);
private JTextField JTextField8 = new JTextField("");
private JButton botaoPesquisaProj = new JButton(“Pesquisar”);
private JLabel nomePesquisa = new JLabel(“Nome:”);
private JButton botaoPesquisaMod = new JButton(“Pesquisar”);
private JLabel numPesqModulo = new JLabel(“Horas Efetivas:”);
private JTextField JTextField9 = new JTextField("");
private JTextField JTextField10 = new JTextField("");
private JLabel pesqConfModulo = new JLabel(“Confidencialidade:”);
private JLabel JLabel16 = new JLabel("__________________________________________________________________________________");
private JLabel adicionarProgramador = new JLabel(“ADICIONAR PROGRAMADOR”);
private JLabel adTipoProgramador = new JLabel(“Tipo Programador:”);
private JTextField JTextField11 = new JTextField("");
private JButton botaoAdicionarProgramador = new JButton(“Adicionar”);
private JLabel nomeProgramador = new JLabel(“Nome Programador:”);
private JTextField JTextField12 = new JTextField("");
private JLabel pesquisaProgramador = new JLabel(“PESQUISA PROGRAMADOR”);
private JButton botaoPesqProgramador = new JButton(“Pesquisar”);
private JLabel pesquisaTipoProgramador = new JLabel(“Tipo Programador:”);
private JTextField JTextField13 = new JTextField("");
private JLabel pesquisaNomeProgramador = new JLabel(“Nome Programador:”);
private JTextField JTextField14 = new JTextField("");
private JLabel calculoProjeto = new JLabel(“Custo do Projeto:”);
private JTextField JTextField15 = new JTextField("");
private JTextField JTextField16 = new JTextField("");
private JLabel resulPesqModulo = new JLabel(“Resultado:”);
private JTextField JTextField17 = new JTextField("");
private JLabel resulPesqProj = new JLabel(“Resultado:”);
private JLabel resulPesqProg = new JLabel(“Resultado:”);
private JTextField JTextField18 = new JTextField("");

public InterfaceGrafica() {
try {
mostra();
} catch(Exception ex) {
ex.printStackTrace();
}
}

public void mostra() throws Exception {

// Cria a Janela
this.getContentPane().setLayout(null);
this.setSize(591, 692);
this.setTitle(“Calculador de custos - versão 1.00”);
this.setResizable(false);

// Cria os Controles na Janela
nomeProjeto.setBounds(new Rectangle(41, 22, 100, 40));
this.getContentPane().add(nomeProjeto, null);
tipoProgramador.setBounds(new Rectangle(36, 66, 105, 40));
this.getContentPane().add(tipoProgramador, null);
modulo.setBounds(new Rectangle(93, 168, 50, 40));
this.getContentPane().add(modulo, null);
JTextField1.setToolTipText(“este é um teste para ver o vai acontecer com este objeto”);
JTextField1.setBounds(new Rectangle(165, 33, 100, 21));
this.getContentPane().add(JTextField1, null);
JTextField2.setBounds(new Rectangle(165, 78, 100, 21));
this.getContentPane().add(JTextField2, null);
JTextField3.setBounds(new Rectangle(166, 177, 100, 21));
this.getContentPane().add(JTextField3, null);
JTextField4.setBounds(new Rectangle(290, 177, 100, 21));
this.getContentPane().add(JTextField4, null);
JTextField5.setBounds(new Rectangle(416, 176, 100, 21));
this.getContentPane().add(JTextField5, null);
numeroModulo.setBounds(new Rectangle(184, 155, 57, 13));
this.getContentPane().add(numeroModulo, null);
dataModulo.setBounds(new Rectangle(265, 155, 150, 13));
this.getContentPane().add(dataModulo, null);
confidencialModulo.setBounds(new Rectangle(414, 155, 101, 13));
this.getContentPane().add(confidencialModulo, null);
tempoProjeto.setBounds(new Rectangle(299, 37, 100, 13));
this.getContentPane().add(tempoProjeto, null);
JTextField6.setBounds(new Rectangle(410, 33, 100, 21));
this.getContentPane().add(JTextField6, null);
adicionar.setBounds(new Rectangle(186, 5, 150, 13));
this.getContentPane().add(adicionar, null);
botaoAdicionar.setBounds(new Rectangle(337, -8, 100, 30));
this.getContentPane().add(botaoAdicionar, null);
botaoAdicionar.addMouseListener (new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Chamada ao Procedimento
}});
adicionarMod.setBounds(new Rectangle(209, 129, 117, 13));
this.getContentPane().add(adicionarMod, null);
botaoModulo.setBounds(new Rectangle(344, 116, 100, 30));
this.getContentPane().add(botaoModulo, null);
botaoModulo.addMouseListener (new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Chamada ao Procedimento
}});
numModProjeto.setBounds(new Rectangle(295, 80, 105, 13));
this.getContentPane().add(numModProjeto, null);
JTextField7.setBounds(new Rectangle(410, 76, 100, 21));
this.getContentPane().add(JTextField7, null);
pesquisaProj.setBounds(new Rectangle(213, 229, 120, 13));
this.getContentPane().add(pesquisaProj, null);
pesquisaModulo.setBounds(new Rectangle(209, 344, 120, 13));
this.getContentPane().add(pesquisaModulo, null);
JTextField8.setBounds(new Rectangle(291, 268, 100, 21));
this.getContentPane().add(JTextField8, null);
botaoPesquisaProj.setBounds(new Rectangle(344, 217, 100, 30));
this.getContentPane().add(botaoPesquisaProj, null);
botaoPesquisaProj.addMouseListener (new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Chamada ao Procedimento
}});
nomePesquisa.setBounds(new Rectangle(226, 274, 57, 13));
this.getContentPane().add(nomePesquisa, null);
botaoPesquisaMod.setBounds(new Rectangle(345, 335, 100, 30));
this.getContentPane().add(botaoPesquisaMod, null);
numPesqModulo.setBounds(new Rectangle(38, 376, 120, 13));
this.getContentPane().add(numPesqModulo, null);
JTextField9.setBounds(new Rectangle(173, 371, 100, 21));
this.getContentPane().add(JTextField9, null);
JTextField10.setBounds(new Rectangle(173, 402, 100, 21));
this.getContentPane().add(JTextField10, null);
pesqConfModulo.setBounds(new Rectangle(51, 406, 104, 13));
this.getContentPane().add(pesqConfModulo, null);
JLabel16.setBounds(new Rectangle(7, 425, 570, 13));
this.getContentPane().add(JLabel16, null);
adicionarProgramador.setBounds(new Rectangle(179, 460, 165, 13));
this.getContentPane().add(adicionarProgramador, null);
adTipoProgramador.setBounds(new Rectangle(43, 496, 107, 13));
this.getContentPane().add(adTipoProgramador, null);
JTextField11.setBounds(new Rectangle(172, 490, 100, 21));
this.getContentPane().add(JTextField11, null);
botaoAdicionarProgramador.setBounds(new Rectangle(354, 453, 100, 30));
this.getContentPane().add(botaoAdicionarProgramador, null);
botaoAdicionarProgramador.addMouseListener (new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Chamada ao Procedimento
}});
nomeProgramador.setBounds(new Rectangle(34, 523, 120, 13));
this.getContentPane().add(nomeProgramador, null);
JTextField12.setBounds(new Rectangle(172, 520, 100, 21));
this.getContentPane().add(JTextField12, null);
pesquisaProgramador.setBounds(new Rectangle(186, 559, 160, 13));
this.getContentPane().add(pesquisaProgramador, null);
botaoPesqProgramador.setBounds(new Rectangle(356, 548, 100, 30));
this.getContentPane().add(botaoPesqProgramador, null);
pesquisaTipoProgramador.setBounds(new Rectangle(40, 589, 120, 13));
this.getContentPane().add(pesquisaTipoProgramador, null);
JTextField13.setBounds(new Rectangle(172, 583, 100, 21));
this.getContentPane().add(JTextField13, null);
pesquisaNomeProgramador.setBounds(new Rectangle(37, 622, 120, 13));
this.getContentPane().add(pesquisaNomeProgramador, null);
JTextField14.setBounds(new Rectangle(173, 620, 100, 21));
this.getContentPane().add(JTextField14, null);
calculoProjeto.setBounds(new Rectangle(307, 304, 100, 13));
this.getContentPane().add(calculoProjeto, null);
JTextField15.setBounds(new Rectangle(416, 300, 100, 21));
this.getContentPane().add(JTextField15, null);
JTextField16.setBounds(new Rectangle(417, 386, 100, 21));
this.getContentPane().add(JTextField16, null);
resulPesqModulo.setBounds(new Rectangle(338, 390, 67, 13));
this.getContentPane().add(resulPesqModulo, null);
JTextField17.setBounds(new Rectangle(168, 300, 100, 21));
this.getContentPane().add(JTextField17, null);
resulPesqProj.setBounds(new Rectangle(95, 306, 67, 13));
this.getContentPane().add(resulPesqProj, null);
resulPesqProg.setBounds(new Rectangle(353, 611, 67, 13));
this.getContentPane().add(resulPesqProg, null);
JTextField18.setBounds(new Rectangle(427, 604, 100, 21));
this.getContentPane().add(JTextField18, null);

this.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
    aoFechar(e);
  }
});

}

private void aoFechar(WindowEvent e) {
System.exit(0);
}
public static void main(String[] args){

InterfaceGrafica janela = new InterfaceGrafica();
janela.show();
}
}

Usa o JTabbedPane para adicionar as “abas”


   JPanel jpProjeto = new JPanel();
   JPanel jpModulo = new JPanel();
   JPanel jpProgramador = new JPanel();
   JTabbedPane jtpTabs = new JTabbePane();

//adiciona os panels como tabs
   jtpTabs.addTab("Projetos", jpProjeto);
   jtpTabs.addTab("Modulos", jpModulo);
   jtpTabs.addTab("Programadores", jpProgramador);

//adiciona a tab no getContentPane
  getContentPane().add(jtpTabs, BorderLayout.CENTER);

//depois eh vc adicionar os componentes em cada JPanel separado

valeu cara, muito obrigado, agora funcionou, só que não estou conseguindo colocar os objetos nas posições que eu quero. Já tentei com o setLocation(), setBounds(), mas não funciona eles ficam todos centralizados.

Por padrao o Layout do JPanel eh o FlowLayout, na criação dos JPanel’s faz assim:

 jpProjeto = new JPanel(null);

Por padrao o Layout do JPanel eh o FlowLayout, na criação dos JPanel’s faz assim:

jpProjeto = new JPanel(null); [/quote]

Mas isso é super complicado porque quando essa janela for dimensionada vai ficar um horror.
Aprendi aqui no forum do guj mesmo que o ideal é usar um gerenciador de layouts

Ta, eu sei disso, mas do jeito que vc tava falando eu achei que tu queria posicionar manualmente!!!

Então é o seguinte, o ideal é usar o GridBagLayout, maaas é meio complicadinho, tem que ver pra é o seu sistema, se for so pra teste ou faculdade usa o GridLayout!!! tipo:


jpProjeto = new JPanel(new GridLayout(5,5,5,5));

divide o panel em 5 linhas x 5 colunas ai eh ir jogando os seus componentes, mas é o seguinte, criar interface grafica tem que ser criativo!!! coisas de 5, 6 ou até 10 panels um dentro do outro, um com flowlayout outro com borderlayour e etc!!! o melhor é vc conhecer os layouts mais simples e saber como eles funcionam, depois eu te aconselho a desenhar, a caneta mesmo, em um papel a sua tela, pq assim fica facil vc ver um meio de ajeitar tudo!!!

Kra usa

jpProjeto.setLayout(null);

Se pode posicionar aonde vc quer…

Espero ter ajudado…