Ajuda na construÇÃo de um menu por favor

SOU NOVO EM JAVA E SEI QUE A GALERA AQUI É FERA, ESTOU COM O SEGUINTE PROBLEMA: NA FACULDADE PEDIRAM PARA FAZER UM TRABALHO E COMPOR ALGUMAS TELAS. AI ESTA O PROBLMA JÁ FIZ TODA A PARTE DE PROGRAMAÇÃO MAS NÃO CONSIGO COMPOR AS TELAS CORRETAMENTE. ESTOU COLOCANDO O CÓDIGO QUE EU FIZ E SE ALGUÉM PUDER ME AJUNDAR ME MOSTRANDO COMO FAÇO PARA CRIAR O MENU ALINHADO CORRETAMENTE EU FICARIA MUITO AGRADECIDO.

O MENU TEM O SEGINTE LAYOUT.

                                    MENU

                   1 - CADASTRO DE CLIENTE
                   2 - GERENCIAR FILMES
                   3 - SAIR

                                [             ] //OPÇÃO QUE O USUARIO VAI DIGITAR (JTEXTFIELD)

CÓDIGO CRIADO :

[code]package trabalho_de_java;

import java.awt.;
import javax.swing.
;
import javax.swing.JOptionPane;
import javax.swing.JApplet;
import java.awt.event.*;

public class PROGRAMA_PRINCIPAL extends JFrame
{
JTextField tf1;
public PROGRAMA_PRINCIPAL()
{

}
public PROGRAMA_PRINCIPAL(String nome)
{
    super(nome);
    JPanel pane = new JPanel();
    JLabel menu = new JLabel("MENU");//Apresnta um label com o   nome menu
    JLabel op1 = new JLabel("1 - CADASTRO DE CLIENTE"); // primeira opção da tela de menu
    JLabel op2 = new JLabel("2 - GERENCIAMENTO DE FITAS"); //segunda opção do menu principal
    JLabel op3 = new JLabel("3 - SAIR"); //terceira opção do menu principal
    tf1 = new JTextField(5); //campo para usuario digitar sua opção
    
   // adicionando os campos no painel
    pane.setLayout( new GridLayout(20, 5));
         
    pane.add(menu); 
    pane.add(op1);
    pane.add(op2);
    pane.add(op3);
    pane.add(tf1);
    
    setContentPane(pane);
    pack();
    setSize(640,480);
    setVisible(true);
   
    JTextFieldHundler Jhandler = new JTextFieldHundler();
    tf1.addActionListener(Jhandler);
    
}
private class JTextFieldHundler implements ActionListener
{
      int var1;
      String var2,var3;
      public void actionPerformed(ActionEvent event) 
      {
          
          if(event.getSource() == tf1)
          {
              var2=tf1.getText();
              var1=Integer.parseInt(var2);
              if(var1 == 1)
              {
                  setVisible(false);
	          JANELA_CLIENTE JC = new JANELA_CLIENTE("SISTEMA GERENCIADOR DE FILMES");
                  JC.setVisible(true);
              }
              if(var1 == 2)
              {
                  setVisible(false);
	          JANELA_FILMES JF = new JANELA_FILMES("SISTEMA GERENCIADOR DE FILMES");
	          JF.setVisible(true);
                 
              }
              if(var1 == 3)
              {
                  
                  JOptionPane.showMessageDialog(null,"SISTEMA FINALIZADO");
	          setVisible(false);
              }
              
          }
          
      
      }
      
  }
public static void main(String args[])
{
    PROGRAMA_PRINCIPAL PP = new PROGRAMA_PRINCIPAL("SISTEMA GERENCIADOR DE FILMES");
}

}[/code]

[color=“red”]editado por Felipe: use bbcode para melhorar a visualizacao do codigo[/color]

nessa linha:

 pane.setLayout( new GridLayout(20, 5));

troque para:

 pane.setLayout( new GridLayout(4, 1)); 

e remova essa linha:

 setSize(640,480);

pois o metodo pack() serve para que a janela se ajuste aos componentes, se vc jah esta pondo ele do tamanho ideal para os componentes n faz sentido logo apos setar outro tamanho…