Problemas com Layout

Pessoal boa noite!
Fiquei uns 2 meses longe do java, e estou com dificuldades na interface gráfica.
Estou trabalhando no desenvolvimento de uma agenda eletrônica, sei que o netbeeans ofereçe muitas facilidades na criação da interface com o usuário, porém quero aprender como tudo funciona.
Bem, o meu problema é o seguinte, tenho um JDesktop e varias JInternalFrame, mas quando abro uma JInternalFrame na tela principal (JDesktop) e movimento esta janela interna os botões que estão na janela principal “desaparecem” juntamente com as imagens. Mas quando passo o mause eles voltam a “ativa”.
se alguém puder me ajudar, eu vou ficar muito agradecido mesmo…;
segue os códigos…

Janela Principal

package br.com.TelasInserts;

import br.com.TelasViws.UsuarioTelaAtividade;
import br.com.TelasViws.UsuarioTelaContato;
import br.com.TelasViws.UsuarioTelaGrupo;
import br.com.TelasViws.UsuarioTelaPasta;
import br.com.pojo.entidades.db.Grupo;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextArea;
import javax.swing.UIManager;

/**
 *
 * @author Tassilo
 */
//Classe principal
//Primeira tela que extends a classe JFrame;
public class UsuarioTelaPrincipal extends JFrame implements ActionListener

{
    //Declarando atributos com encapsulamento máximo;
    //Declarando atributo que representa a Janela principal
    private JDesktopPane DesktopjanelaPrincipal;

    //Declarando as janelas internas
    private UsuarioTelaNovoGrupo usuarioTelaNovoGrupo;
    private UsuarioTelaNovoContato usuarioTelaNovoContato;
    private UsuarioTelaNovaPasta usuarioTelaNovaPasta;
    private UsuarioTelaNovaAtividade usuarioTelaNovaAtividade;
    private UsuarioTelaAtividade usuarioTelaAtividade;
    private UsuarioTelaContato usuarioTelaContato;
    private UsuarioTelaGrupo usuarioTelaGrupo;
    private UsuarioTelaPasta usuarioTelaPasta;

    //Declarando um atributo, BemVindo, como JLabel (Texto Fixo);
    private JLabel lblBemVindo;
    private JLabel lblNome;
    private JLabel lblfotoagenda;


    //Declarando os botões da tela principal, JButton;
    private JButton btnAtivAgendadas;
    private JButton btnNovaAtividade;
    private JButton btnContatos;
    private JButton btnNovoContato;
    private JButton btnGrupos;
    private JButton btnNovoGrupo;
    private JButton btnPasta;
    private JButton btnNovaPasta;

    //Declarando os atributos da barra de menu
    private JMenuBar barra;
    private JMenu arquivo, editar, formatar, ajuda;
    private JMenu corfundo;
    //Itens do Arquivo
    private JMenuItem sair, salvsenha;
    //Itens do Editar
    private JMenuItem login, nome, email, endereco, cidade;
    private ButtonGroup corfundogrupo;
    //Itens do Formatar
    private JRadioButtonMenuItem azul, verde, vermelho, rosa, preto;
    //Itens do Ajuda
    private JMenuItem empresa, documentacao;
    //Declarando campo editavel do tipo txt;
    private JTextArea txtTela;

    public UsuarioTelaPrincipal ()
    {
    //Construtor padrão da super classe
    super("AGENDA ELETRÔNICA");
    //"Chamando" o método
    componentesTela();
    }

    //Método que contem todos so componentes da tela
    private void componentesTela()
    {
    Container tela = getContentPane();
   
    //Criando objetos
    //Criando uma instância do objeto JMenuBar
    barra = new JMenuBar();
    //Adicionando a barra na tela
    setJMenuBar(barra);
    //Instanciando os objetos da barra
    arquivo = new JMenu("Arquivo");
    editar = new JMenu("Editar");
    formatar = new JMenu("Formatar");
    ajuda = new JMenu("Ajuda");
    //Adicionando o objetos na barra
    barra.add(arquivo);
    barra.add(editar);
    barra.add(formatar);
    barra.add(ajuda);
    //Instanciando os objetos itens
    //Itens do Arquivo
    salvsenha = new JMenuItem("Salvar Senha aqui      Ctrl A");
    sair = new JMenuItem("Sair");
    //Itens do Editar
    login = new JMenuItem("Alterar Login");
    nome = new JMenuItem("Alterar Nome");
    email = new JMenuItem("Alterar E-Mail");
    endereco = new JMenuItem("Alterar Endereco");
    cidade = new JMenuItem("Alterar Cidade");
    //Itens do Formatar
    corfundo = new JMenu("Cor de Fundo");
    azul = new JRadioButtonMenuItem("Azul");
    verde = new JRadioButtonMenuItem("Verde");
    vermelho = new JRadioButtonMenuItem("Vermelho");
    rosa = new JRadioButtonMenuItem("Rosa");
    preto = new JRadioButtonMenuItem("Preto");
    //Itens do Ajuda
    empresa = new JMenuItem("Falar com Administrador");
    documentacao = new JMenuItem("Exibir Documentação");
    

    //Adicionando os atalhos para os objetos
    arquivo.setMnemonic(KeyEvent.VK_A);
    editar.setMnemonic(KeyEvent.VK_E);
    formatar.setMnemonic(KeyEvent.VK_F);
    ajuda.setMnemonic(KeyEvent.VK_J);
    sair.setMnemonic(KeyEvent.VK_S);

    //Referenciando o item ao seu Menu
    //Itens do Arquivo
    arquivo.add(salvsenha);
    arquivo.addSeparator();
    arquivo.add(sair);
    //Itens do Editar
    editar.add(login);
    editar.add(nome);
    editar.add(email);
    editar.add(endereco);
    editar.add(cidade);
    //Itens do Formatar
    formatar.add(corfundo);
    corfundo.add(azul);
    corfundo.add(verde);
    corfundo.add(vermelho);
    corfundo.add(rosa);
    corfundo.add(preto);

    //Itens do Ajuda
    ajuda.add(empresa);
    ajuda.add(documentacao);

    //
    setLocationRelativeTo(null);
    //ImageIcon agenda = new ImageIcon("agenda.jpeg");


    lblBemVindo = new JLabel("BEM VINDO(a): ");
    lblNome = new JLabel("Tassilo Duarte Souza");
    lblfotoagenda = new JLabel("");

    btnAtivAgendadas = new JButton("Atividades Agendadas");
    btnNovaAtividade = new JButton("Nova Atividade");
    btnContatos = new JButton("Contatos");
    btnNovoContato = new JButton("Adicionar Contato");
    btnGrupos = new JButton("Grupos");
    btnNovoGrupo = new JButton("Criar Grupo");
    btnPasta = new JButton("Pasta");
    btnNovaPasta = new JButton("Criar Pasta");

    txtTela = new JTextArea();

    //Posicionando os campos na tela
    lblBemVindo.setBounds(510, 5, 100, 30);
    lblNome.setBounds(600, 5, 200, 30);

    //Posicionando a imagem na tela
    lblfotoagenda.setBounds(10,375, 190, 150);

    //Adicionando uma imagem na tela principal usando o JLabel
    lblfotoagenda.setIcon(new ImageIcon("imagens/agenda.jpg"));
    //Adicionando imagens aos botões
    btnAtivAgendadas.setIcon(new ImageIcon("imagens/atividade.png"));
    btnNovaAtividade.setIcon(new ImageIcon("imagens/novatividade.png"));
    btnContatos.setIcon(new ImageIcon("imagens/user.png"));
    btnNovoContato.setIcon(new ImageIcon("imagens/adduser.png"));
    btnGrupos.setIcon(new ImageIcon("imagens/users.png"));
    btnNovoGrupo.setIcon(new ImageIcon("imagens/addusers.png"));
    btnPasta.setIcon(new ImageIcon("imagens/pasta.png"));
    btnNovaPasta.setIcon(new ImageIcon("imagens/novapasta.png"));

    btnAtivAgendadas.setBounds(10, 45, 190, 40);
    btnNovaAtividade.setBounds(10, 85, 190, 40);
    btnContatos.setBounds(10, 125, 190,40);
    btnNovoContato.setBounds(10, 165, 190, 40);
    btnGrupos.setBounds(10, 205, 190, 40);
    btnNovoGrupo.setBounds(10, 245, 190, 40);
    btnPasta.setBounds(10, 285, 190, 40);
    btnNovaPasta.setBounds(10, 325, 190, 40);

    //Adicionando dicas aos botões
    btnAtivAgendadas.setToolTipText("Exibir atividades agendadas!");
    btnNovaAtividade.setToolTipText("Cadastrar uma nova atividade!");
    btnContatos.setToolTipText("Visualizar todos os contatos!");
    btnNovoContato.setToolTipText("Adicionar um novo contato!");
    btnGrupos.setToolTipText("visualizar meus grupos!");
    btnNovoGrupo.setToolTipText("Adicionar um novo grupo!");
    btnPasta.setToolTipText("Visualizar minhas pastas!");
    btnNovaPasta.setToolTipText("Adicionar uma nova pasta!");
    //Definindo a cor de fundo das dicas
    UIManager.put("ToolTip.background",SystemColor.info);
    setLocationRelativeTo(null);
   
    txtTela.setBounds(200, 45, 550, 360);

    //Definindo o lyout da tela
    //setLayout(null);

    //Adicionando os campos na tela
    add (lblBemVindo);
    add (lblNome);
    tela.add (lblfotoagenda);

    add (btnAtivAgendadas);
    add (btnNovaAtividade);
    add (btnContatos);
    add (btnNovoContato);
    add (btnGrupos);
    add (btnNovoGrupo);
    add (btnPasta);
    add (btnNovaPasta);
    //add (txtTela);

    //se eu tiro o comentário deste setLayout null a tela principal fica com as cores que quero, porém as janelas internas não abrem.
    //tela.setLayout(null);
    //Adicionando cor na janela principal (tela)
    tela.setBackground(new Color(155, 205, 155));
    //Especificando a cor azul para o JLabel Nome
    lblNome.setForeground(new Color(0, 0, 255));
    //Criando uma istância de JDesktopPane
    DesktopjanelaPrincipal = new JDesktopPane();
    DesktopjanelaPrincipal.setLocation(0, 50);
    getContentPane().add (DesktopjanelaPrincipal);

    //Adicionando os ActionListener
    btnAtivAgendadas.addActionListener(this);
    btnNovaAtividade.addActionListener(this);
    btnContatos.addActionListener(this);
    btnNovoContato.addActionListener(this);
    btnGrupos.addActionListener(this);
    btnNovoGrupo.addActionListener(this);
    btnPasta.addActionListener(this);
    btnNovaPasta.addActionListener(this);


    //Configurando a tela

    setBounds(0, 0, 800, 615);
    //Deixando a tela visivel
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    public void actionPerformed(ActionEvent e ) {

        if(e.getSource() == btnAtivAgendadas){

        mostrarJanelaAtividade();

        }

        if(e.getSource() == btnNovaAtividade){

        mostrarJanelaNovaAtividade();

        }
        if(e.getSource() == btnContatos){

            mostrarJanelaContato();
        }
        
        if(e.getSource() == btnNovoContato){

        mostrarJanelaNovoContato();

        }

        if(e.getSource() == btnGrupos){

            mostrarJanelaGrupo();
        }

        if(e.getSource()==btnNovoGrupo){
        //Chama o método
            mostrarJanelaNovoGrupo();
         
        }

        if(e.getSource() == btnPasta){

           mostrarJanelaPasta();
        }

        if(e.getSource() == btnNovaPasta){

            mostrarJanelaNovaPasta();

        }

    }

    //Método que retorna
    public void mostrarJanelaInterna(JInternalFrame frame){
        //Verifica se a janela interna já está na área de trabalho
        //Se o retorno for falso, o método ComponentZOrder retornará -1
        if(DesktopjanelaPrincipal.getComponentZOrder(frame)== -1){
            //Adiciona a janela interna a área de trabalho
            DesktopjanelaPrincipal.add(frame);
        }
        //Torna a janela interna visivel
        frame.setVisible(true);

        try {
            //Seleciona a janela que acaba de ser aberta
            frame.setSelected(true);
            //Exeção, caso não seja possível selecionar a janela
        } catch(PropertyVetoException exessao){

            Logger.getLogger(UsuarioTelaPrincipal.class.getName()).log(Level.SEVERE, null, exessao);
        }
    }

    /**Os métodos a seguir verificaom se a janela não existe, se o retorno for verdadeiro
     * é criada uma nova instância da classe, e em seguida é adicionada no desktope
     */
    public void mostrarJanelaNovoGrupo()
    {//Inicio do método mostrarJanelaNovoGrupo
        if(usuarioTelaNovoGrupo == null)
        {//Inicio do if
           //Caso a janela interna ainda não tenha sido instânciada, cria uma nova instância
           usuarioTelaNovoGrupo = new UsuarioTelaNovoGrupo();
        }//Fim do if
        //"Chamando" o método mostrar janela interna passando como parâmetro a janela intera
        mostrarJanelaInterna(usuarioTelaNovoGrupo);
    }//Fim do método mostrarJanelaNovoGrupo

    public void mostrarJanelaNovoContato()
    {
        if (usuarioTelaNovoContato == null)
        {
           usuarioTelaNovoContato = new UsuarioTelaNovoContato();
        }
        mostrarJanelaInterna(usuarioTelaNovoContato);
    }

    public void mostrarJanelaNovaPasta()
    {
        if (usuarioTelaNovaPasta == null)
        {
           usuarioTelaNovaPasta = new UsuarioTelaNovaPasta();
        }
        mostrarJanelaInterna(usuarioTelaNovaPasta);
    }

    public void mostrarJanelaNovaAtividade()
    {
        if(usuarioTelaNovaAtividade == null)
        {
            usuarioTelaNovaAtividade = new UsuarioTelaNovaAtividade();
        }
        mostrarJanelaInterna(usuarioTelaNovaAtividade);
    }

    public void mostrarJanelaAtividade()
    {
        if(usuarioTelaAtividade == null)
        {
            usuarioTelaAtividade = new UsuarioTelaAtividade();
        }
        mostrarJanelaInterna(usuarioTelaAtividade);
    }

    public void mostrarJanelaContato()
    {
        if(usuarioTelaContato == null)
        {
            usuarioTelaContato = new UsuarioTelaContato();
        }
        mostrarJanelaInterna(usuarioTelaContato);
    }

    public void mostrarJanelaGrupo()
    {
        if(usuarioTelaGrupo == null)
        {
            usuarioTelaGrupo = new UsuarioTelaGrupo();
        }
        mostrarJanelaInterna(usuarioTelaGrupo);
    }

    public void mostrarJanelaPasta()
    {
        if(usuarioTelaPasta == null)
        {
            usuarioTelaPasta = new UsuarioTelaPasta();
        }
        mostrarJanelaInterna(usuarioTelaPasta);
    }
}

e esta é uma das Janelas Internas:


package br.com.TelasViws;

import br.com.TelasInserts.UsuarioTelaNovaAtividade;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Tassilo
 */
public class UsuarioTelaAtividade extends JInternalFrame implements ActionListener{
    //Declarando os atributos
    //Atributos do tipo JLabel
    private JLabel lbltexto;
    private JLabel lblpesquisar;
    
    //Atributo do tipo JTextFild
    private JTextField txtpesquisar;

    //Atributos do tipo JCheckBox (caixa de seleção)
    private JRadioButton rbpesquisanome;
    private JRadioButton rbpesquisadata;
    private JRadioButton rbpesquisalocal;
    private JRadioButton rbselecionartodas;

    private ButtonGroup grupo;


    //Atributos do tipo JTable
    private JTable tabelabatividade; 
    //Cria um método padrão para o controle dos dados de uma tabela
    private DefaultTableModel controladadostabela = new DefaultTableModel();
    //Trata os eventos de selecao da tabela
    ListSelectionModel selecaoatividades;
    //Criando um vetor para armazenar o nome das culunas
    private Vector nomedascolunas;
    //Criando um vetor de String
    private String[] nomecolunastabela = {"Atividade", "Data", "Hora", "Local", "Descricao"};

    //Atributo do tipo JScrollPanel (barra de rolagem)
    private JScrollPane barratividades;

    //Atributos do tipo JButton
    private JButton btnpesquisar;
    private JButton btnalterar;
    private JButton btnexcluir;
    private JButton btncancelar;

    //Metodo construtor
    public UsuarioTelaAtividade(){
    //Construtor padrão da super classe
    super("Atividades");

    Container tela = getContentPane();
    //Declarando uma matriz que recebera o conteúdo da tabela
    
    Object [][] conteudodatabela = {{"", "", "", "", ""}, {"", "", "", "", ""},
                                    {"", "", "", "", ""}, {"", "", "", "", ""},
                                    {"", "", "", "", ""}, {"", "", "", "", ""},
                                    {"", "", "", "", ""}, {"", "", "", "", ""}};

    //Criando o objeto vetor
    nomedascolunas = new Vector();

    //Inicializando o vetor que da nome as colunas
    nomedascolunas.add ("Atividade");
    nomedascolunas.add ("Data");
    nomedascolunas.add ("Hora");
    nomedascolunas.add ("Lacal");
    nomedascolunas.add ("Descrição");

    //Criando uma Instância da Tabela
    tabelabatividade = new JTable(controladadostabela);

    //Criando um Instância da barra de rolagem
    barratividades = new JScrollPane(tabelabatividade);

    //Definindo o modelo da tabela, com o conteudo que vai ser armazenado e os nomes das colunas
    controladadostabela.setDataVector(conteudodatabela, nomecolunastabela);

    //inclui o JScroolPane(tabela que esta dentro) no container
    barratividades.setBounds(20, 170, 500, 145);
    tela.add(barratividades);
    

    lbltexto = new JLabel("Atividades");
    lblpesquisar = new JLabel("Pesquisar por:");

    txtpesquisar = new JTextField("");

    rbpesquisanome = new JRadioButton("Pesquisar por nome");
    rbpesquisadata = new JRadioButton("Pesquisar por data");
    rbpesquisalocal = new JRadioButton("Pesquisar por local");
    rbselecionartodas = new JRadioButton("Visualizar todas");

    //Botões
    btnpesquisar = new JButton("Pesquisar");
    btnalterar = new JButton("Alterar");
    btnexcluir = new JButton("Excluir");
    btncancelar = new JButton("Cancelar");


    //Definindo o Layout da tela como nulo
    setLayout(null);
    //Posicionando os campos na tela
    lbltexto.setBounds(20, 20, 200, 20);
    lblpesquisar.setBounds(20, 60, 100, 20);

    //
    txtpesquisar.setBounds(20, 140, 300, 20);

    //
    rbpesquisanome.setBounds(20, 85, 200, 20);
    rbpesquisadata.setBounds(220, 85, 200, 20);
    rbpesquisalocal.setBounds(20, 110, 200, 20);
    rbselecionartodas.setBounds(220, 110, 200, 20);

    //Adicionando imagens ao botões
    btnpesquisar.setIcon(new ImageIcon("imagens/pesquisar.png"));
    btnalterar.setIcon(new ImageIcon("imagens/editar.gif"));
    btnexcluir.setIcon(new ImageIcon("imagens/excluir.jpg"));
    btncancelar.setIcon(new ImageIcon("imagens/delete.png"));

    //
    btnpesquisar.setBounds(330, 138, 180, 25);
    btnalterar.setBounds(30, 400, 130, 25);
    btnexcluir.setBounds(165, 400, 130, 25);
    btncancelar.setBounds(300,400, 130, 25);


    //Adicionando os campos na tela
    //Campos do tipo JLabel
    getContentPane().add (lbltexto);
    getContentPane().add (lblpesquisar);

    //Campo do tipo JTextFild
    getContentPane().add (txtpesquisar);

    grupo = new ButtonGroup();
    //Adicionando os objetos dentro de um grupo para especificar
    //que apenas um poderá ser selecionado
    grupo.add(rbselecionartodas);
    grupo.add (rbpesquisanome);
    grupo.add (rbpesquisadata);
    grupo.add (rbpesquisalocal);

    //Permite que um campo fique selecionado como campo padão
    rbselecionartodas.setSelected(true);

    getContentPane().add(rbselecionartodas);
    getContentPane().add(rbpesquisanome);
    getContentPane().add(rbpesquisadata);
    getContentPane().add(rbpesquisalocal);


    //Campos do tipo JButton
    getContentPane().add (btnpesquisar);
    getContentPane().add (btnalterar);
    getContentPane().add (btnexcluir);
    getContentPane().add (btncancelar);

    btnalterar.addActionListener(this);
    btnexcluir.addActionListener(this);
    btncancelar.addActionListener(this);

    //Adicionando cor a tela
    tela.setBackground(new Color(255, 250, 205));

    //Configurando a tela
    setBounds(210, 45, 550, 500);
    setVisible(true);
    setClosable(true);
    setIconifiable(true);
    setMaximizable(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    
    tabelabatividade.setModel(controladadostabela);
    tabelabatividade.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    selecaoatividades = tabelabatividade.getSelectionModel();

    selecaoatividades.addListSelectionListener(new ListSelectionListener() {

            public void valueChanged(ListSelectionEvent e) {
                if(!e.getValueIsAdjusting()){
                dispose();

                }
            }
        });

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    //}


}

    public void actionPerformed(ActionEvent e) {

        if(e.getSource() == btnalterar){

            UsuarioTelaNovaAtividade utna = new UsuarioTelaNovaAtividade();
        }

        if(e.getSource() == btnexcluir){

        }

        if(e.getSource() == btncancelar){

            dispose();

        }
    }
}