Godoy, o código tá meio extenso. =/
Não precisa ler ele todo nao. =/
[code]
public class MainFrame extends javax.swing.JFrame {
/** Creates new form MainFrame */
public MainFrame() {
    initComponents();
}
/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
    desktopPanel = new javax.swing.JDesktopPane();
    internalFrameEdit = new javax.swing.JInternalFrame();
    labelTitleEditContact = new javax.swing.JLabel();
    panelDataEntered2 = new javax.swing.JPanel();
    labelContactNameSearch = new javax.swing.JLabel();
    contactNameSearch = new javax.swing.JTextField();
    buttonSearch = new javax.swing.JButton();
    panelDataEntered3 = new javax.swing.JPanel();
    labelContactNameEdited = new javax.swing.JLabel();
    contactNameEdited = new javax.swing.JTextField();
    labelContactNumberEdited = new javax.swing.JLabel();
    contactNumberEdited = new javax.swing.JTextField();
    buttonSalvar2 = new javax.swing.JButton();
    internalFrameDelete = new javax.swing.JInternalFrame();
    internalFrameRegister = new javax.swing.JInternalFrame();
    labelTitleRegisterContact = new javax.swing.JLabel();
    panelDataEntered = new javax.swing.JPanel();
    labelContactName = new javax.swing.JLabel();
    contactName = new javax.swing.JTextField();
    labelContactNumber = new javax.swing.JLabel();
    contactNumber = new javax.swing.JTextField();
    buttonSalvar = new javax.swing.JButton();
    menuBar = new javax.swing.JMenuBar();
    menuArquivo = new javax.swing.JMenu();
    intemMenuFechar = new javax.swing.JMenuItem();
    menuExibir = new javax.swing.JMenu();
    menuOpcoes = new javax.swing.JMenu();
    itemMenuNovo = new javax.swing.JMenuItem();
    itemMenuEditar = new javax.swing.JMenuItem();
    itemMenuExcluir = new javax.swing.JMenuItem();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Agenda Eletronica");
    setBounds(new java.awt.Rectangle(0, 0, 0, 0));
    setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    setResizable(false);
    desktopPanel.setBackground(new java.awt.Color(204, 204, 204));
    internalFrameEdit.setClosable(true);
    internalFrameEdit.setIconifiable(true);
    internalFrameEdit.setTitle("Editar Contato");
    internalFrameEdit.setNormalBounds(new java.awt.Rectangle(0, 20, 350, 120));
    internalFrameEdit.setVisible(true);
    internalFrameEdit.getContentPane().setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 10));
    labelTitleEditContact.setFont(new java.awt.Font("Tahoma", 0, 16)); // NOI18N
    labelTitleEditContact.setForeground(new java.awt.Color(51, 153, 255));
    labelTitleEditContact.setText("Digite o nome do contato");
    internalFrameEdit.getContentPane().add(labelTitleEditContact);
    panelDataEntered2.setLayout(new java.awt.GridLayout(1, 0, 5, 5));
    labelContactNameSearch.setText("Nome do contato:");
    panelDataEntered2.add(labelContactNameSearch);
    contactNameSearch.setAutoscrolls(false);
    panelDataEntered2.add(contactNameSearch);
    buttonSearch.setText("Buscar");
    panelDataEntered2.add(buttonSearch);
    internalFrameEdit.getContentPane().add(panelDataEntered2);
    panelDataEntered3.setMinimumSize(new java.awt.Dimension(170, 79));
    panelDataEntered3.setLayout(new java.awt.GridLayout(3, 2, 5, 5));
    labelContactNameEdited.setText("Nome do Contato:");
    panelDataEntered3.add(labelContactNameEdited);
    contactNameEdited.setEditable(false);
    contactNameEdited.setEnabled(false);
    panelDataEntered3.add(contactNameEdited);
    labelContactNumberEdited.setText("Telefone do Contato:");
    panelDataEntered3.add(labelContactNumberEdited);
    contactNumberEdited.setEditable(false);
    contactNumberEdited.setEnabled(false);
    panelDataEntered3.add(contactNumberEdited);
    buttonSalvar2.setText("Salvar");
    buttonSalvar2.setEnabled(false);
    panelDataEntered3.add(buttonSalvar2);
    internalFrameEdit.getContentPane().add(panelDataEntered3);
    internalFrameEdit.setBounds(50, 40, 350, 220);
    desktopPanel.add(internalFrameEdit, javax.swing.JLayeredPane.DEFAULT_LAYER);
    internalFrameDelete.setClosable(true);
    internalFrameDelete.setIconifiable(true);
    internalFrameDelete.setMaximizable(true);
    internalFrameDelete.setResizable(true);
    internalFrameDelete.setPreferredSize(new java.awt.Dimension(300, 240));
    javax.swing.GroupLayout internalFrameDeleteLayout = new javax.swing.GroupLayout(internalFrameDelete.getContentPane());
    internalFrameDelete.getContentPane().setLayout(internalFrameDeleteLayout);
    internalFrameDeleteLayout.setHorizontalGroup(
        internalFrameDeleteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 284, Short.MAX_VALUE)
    );
    internalFrameDeleteLayout.setVerticalGroup(
        internalFrameDeleteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 211, Short.MAX_VALUE)
    );
    internalFrameDelete.setBounds(140, 110, 300, 240);
    desktopPanel.add(internalFrameDelete, javax.swing.JLayeredPane.DEFAULT_LAYER);
    internalFrameRegister.setClosable(true);
    internalFrameRegister.setIconifiable(true);
    internalFrameRegister.setTitle("Cadastrar Novo");
    internalFrameRegister.getContentPane().setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 25));
    labelTitleRegisterContact.setFont(new java.awt.Font("Tahoma", 0, 16));
    labelTitleRegisterContact.setForeground(new java.awt.Color(0, 153, 255));
    labelTitleRegisterContact.setText("Registro de um novo contato");
    internalFrameRegister.getContentPane().add(labelTitleRegisterContact);
    panelDataEntered.setLayout(new java.awt.GridLayout(3, 2, 0, 5));
    labelContactName.setText("Nome do Contato:  ");
    panelDataEntered.add(labelContactName);
    panelDataEntered.add(contactName);
    labelContactNumber.setText("Telefone do Contato:  ");
    panelDataEntered.add(labelContactNumber);
    panelDataEntered.add(contactNumber);
    buttonSalvar.setText("Salvar");
    panelDataEntered.add(buttonSalvar);
    internalFrameRegister.getContentPane().add(panelDataEntered);
    internalFrameRegister.setBounds(160, 10, 350, 190);
    desktopPanel.add(internalFrameRegister, javax.swing.JLayeredPane.DEFAULT_LAYER);
    menuArquivo.setText("Arquivo");
    intemMenuFechar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
    intemMenuFechar.setText("Fechar");
    menuArquivo.add(intemMenuFechar);
    menuBar.add(menuArquivo);
    menuExibir.setText("Exibir");
    menuBar.add(menuExibir);
    menuOpcoes.setText("Opcoes");
    itemMenuNovo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.ALT_MASK));
    itemMenuNovo.setText("Novo");
    itemMenuNovo.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            itemMenuNovoActionPerformed(evt);
        }
    });
    menuOpcoes.add(itemMenuNovo);
    itemMenuEditar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK));
    itemMenuEditar.setText("Editar");
    itemMenuEditar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            itemMenuEditarActionPerformed(evt);
        }
    });
    menuOpcoes.add(itemMenuEditar);
    itemMenuExcluir.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.ALT_MASK));
    itemMenuExcluir.setText("Excluir");
    menuOpcoes.add(itemMenuExcluir);
    menuBar.add(menuOpcoes);
    setJMenuBar(menuBar);
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(desktopPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 651, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addComponent(desktopPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
            .addContainerGap())
    );
    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    setBounds((screenSize.width-667)/2, (screenSize.height-494)/2, 667, 494);
}// </editor-fold>//GEN-END:initComponents
private void itemMenuNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemMenuNovoActionPerformed
     internalFrameRegister.setVisible(true);
}//GEN-LAST:event_itemMenuNovoActionPerformed
private void itemMenuEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemMenuEditarActionPerformed
    internalFrameEdit.setVisible(true);
}//GEN-LAST:event_itemMenuEditarActionPerformed
/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MainFrame().setVisible(true);    
        }
    });
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton buttonSalvar;
private javax.swing.JButton buttonSalvar2;
private javax.swing.JButton buttonSearch;
private javax.swing.JTextField contactName;
private javax.swing.JTextField contactNameEdited;
private javax.swing.JTextField contactNameSearch;
private javax.swing.JTextField contactNumber;
private javax.swing.JTextField contactNumberEdited;
private javax.swing.JDesktopPane desktopPanel;
private javax.swing.JMenuItem intemMenuFechar;
private javax.swing.JInternalFrame internalFrameDelete;
private javax.swing.JInternalFrame internalFrameEdit;
private javax.swing.JInternalFrame internalFrameRegister;
private javax.swing.JMenuItem itemMenuEditar;
private javax.swing.JMenuItem itemMenuExcluir;
private javax.swing.JMenuItem itemMenuNovo;
private javax.swing.JLabel labelContactName;
private javax.swing.JLabel labelContactNameEdited;
private javax.swing.JLabel labelContactNameSearch;
private javax.swing.JLabel labelContactNumber;
private javax.swing.JLabel labelContactNumberEdited;
private javax.swing.JLabel labelTitleEditContact;
private javax.swing.JLabel labelTitleRegisterContact;
private javax.swing.JMenu menuArquivo;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenu menuExibir;
private javax.swing.JMenu menuOpcoes;
private javax.swing.JPanel panelDataEntered;
private javax.swing.JPanel panelDataEntered2;
private javax.swing.JPanel panelDataEntered3;
// End of variables declaration//GEN-END:variables
}[/code]
Eu fiz um teste agora, para quando o user clicar no JMenuItem(itemMenuNovo) pra criar um novo contato com nome e telefone o evento faz o seguinte:
private void itemMenuNovoActionPerformed(java.awt.event.ActionEvent evt) {                                             
         desktopPanel.add(internalFrameRegister); //Adiciona ao desktopPanel o JInternalFrame que contem o formulário.
         internalFrameRegister.setVisible(true); //Seta a visibilidade para true
    }
 (Detalhe: antes de eu testar isso, eu só tinha setado a visibilidade pra true.)
NO primeiro clique no ‘itemMenuNovo’ para criar um novo contato ele lança uma exception. E quando clico denovo ele abre o JInternalFrame  :evil:
A exceção é na linha que eu adiciono ao desktopPanel: Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: illegal component position.
Abraço