Abrir tela pela opção do menu

Pessoal tenho duas classes menu e agenda e quero abrir a tela agenda pela opção abrir do menu.

coloquei uma ação na opção abrir do menu mas não funciona.

abrir.addActionListener(
		        new ActionListener()
	            {
	            public void actionPerformed(ActionEvent e)
	                {
	                // colocar aqui o código da ação
	            	Agenda ag = new Agenda();
	            	ag.setVisible(true);
	                }
	            } );

estou querendo abrir essa tela:

import javax.swing.*;
import java.awt.*;
import java.text.*;

public class Agenda extends JPanel {
	private JLabel lblNome, lblEmail, lblNascimento, lblFone, lblEndereco;
	private JTextField txtNome, txtEmail, txtFone;
	private JFormattedTextField txtNascimento;
	private JTextArea txtEndereco;
	private Format dateFormater;

	public Agenda() {
		lblNome = new JLabel("Nome");
		lblEmail = new JLabel("Email");
		lblNascimento = new JLabel("Nascimento");
		lblFone = new JLabel("Fone");
		lblEndereco = new JLabel("Endereco");
		txtNome = new JTextField(40);
		txtEmail = new JTextField(35);
		txtFone = new JTextField(15);
		txtEndereco = new JTextArea("", 3, 35);
		// cria-se o elemento de entrada formatada usando um formato pre-definido
		// atraves da java.text.SimpleDateFormat
		dateFormater = new SimpleDateFormat("dd/MM/yyyy");
		txtNascimento = new JFormattedTextField( dateFormater );
		txtNascimento.setColumns( 20 );
	}
	public void init() {
		setLayout( new GridLayout(5,1) );
		FlowLayout esquerda = new FlowLayout( FlowLayout.LEFT );
		// usando Paineis auxiliares do tipo FlowLayout para alinha a esquerda
		// e poder inserir mais um componente por linha do grid
		JPanel auxNome = new JPanel( esquerda );
		auxNome.add( lblNome );
		auxNome.add( txtNome );
		JPanel auxNascimento = new JPanel( esquerda );
		auxNascimento.add( lblNascimento );
		auxNascimento.add( txtNascimento );
		JPanel auxEmail = new JPanel( esquerda );
		auxEmail.add( lblEmail );
		auxEmail.add( txtEmail );
		JPanel auxFone = new JPanel( esquerda );
		auxFone.add( lblFone );
		auxFone.add( txtFone );
		// o JTextArea deve estar sempre de um JScrollPane
		JScrollPane scrollEndereco = new JScrollPane ( txtEndereco,
				JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
		JPanel auxEndereco = new JPanel( esquerda );
		auxEndereco.add( lblEndereco );
		auxEndereco.add( scrollEndereco );


		// adciona as linhas ao grid
		add( auxNome );
		add( auxNascimento );
		add( auxFone );
		add( auxEmail );
		add( auxEndereco );
	}
	public static void main(String arg[]) {
		Agenda agendaPanel = new Agenda();
		agendaPanel.init();
		JFrame frame = new JFrame("AgendaPanel");
		frame.getContentPane().add( agendaPanel );
		frame.pack();
		frame.setVisible( true );
	}
}

O que estou fazendo de errado

Agradeço a ajuda

Marcos

Olha na sua class agenta você à crou extendendo JPanel, veja que função main que executa o programa você criou uma JFrame para adicionar essa sua class, e crei que ali sim tenha dado certo e tenha aberto a sua agenda, so que na class agenda você não tem um JFrame e nem o botão onde é chamado essa class você não criou um JFrame,
então cri um JFrame num desses dois lugares que acho que vai dar certo!