Problema com tranferFocus()

Ai galera,eu fiz uma aplicaçãozinha para brincar um pouco com Swing.
Este é o código que eu fiz…
obs: Sei que está mal estruturado, mas como disse apenas para brincar um pouco para aprender…

package net.kina.cliente.view;

import java.awt.Component;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Login extends JFrame{
	private JLabel text = new JLabel();
	private JPanel titulo = new JPanel();
	private JTextField nome = new JTextField();
	private JPasswordField password = new JPasswordField();
	private JPanel login = new JPanel();
	private GridLayout grid = new GridLayout(1,3);
	private JButton ok = new JButton();
	private JButton cancel = new JButton();
	private GridBagConstraints gridBag = new GridBagConstraints();

	public Login(){
		super("Login");

		getContentPane().setSize(300,500);
		getContentPane().setLayout(new GridBagLayout());

		/* Título */
		Font f = new Font("Verdana", Font.BOLD,15);
		text.setText("Título");
		text.setFont(f);
		titulo.add(text);
		titulo.setAlignmentY(JPanel.CENTER_ALIGNMENT);
		
		/* Campos */
		nome.setColumns(8);
		password.setColumns(8);


		nome.addKeyListener(new Key());
		password.addKeyListener(new Key());
		
		/* Botões */
		grid.setHgap(30);
		grid.setVgap(30);
		login.setLayout(grid);
		ok.setText("Login");
		ok.setSize(5,5);
		cancel.setText("Sair");
		cancel.setSize(5,5);
		login.add(cancel);
		login.add(ok);
		
		gridBag.fill = GridBagConstraints.HORIZONTAL; 
		gridBag.gridy = 0;
		getContentPane().add(titulo,gridBag);

		gridBag.gridy = 1;
		gridBag.gridx = 0;
		getContentPane().add(createLabel("Nome:", JLabel.RIGHT_ALIGNMENT), gridBag);
		
		gridBag.gridy = 1;
		gridBag.gridx = 1;
		getContentPane().add(nome,gridBag);

		gridBag.gridy = 2;
		gridBag.gridx = 0;
		getContentPane().add(createLabel("Senha:", JLabel.RIGHT_ALIGNMENT),gridBag);

		gridBag.gridy = 2;
		gridBag.gridx = 1;
		getContentPane().add(password,gridBag);

		gridBag.gridy = 3;
		getContentPane().add(login, gridBag);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setVisible(true);
	}
	

	private Component createLabel(String text){
		JPanel panel = new JPanel();
		JLabel label = new JLabel(text);
		panel.add(label);
		return panel;
	}
	private Component createLabel(String text, float alignmentY){
		JPanel panel = new JPanel();
		JLabel label = new JLabel(text);
		panel.add(label);
		panel.setAlignmentY(alignmentY);
		return panel;
	}
	
	private Component createLabel(String text, float alignmentY, float alignmentX){
		JPanel panel = new JPanel();
		JLabel label = new JLabel(text);
		panel.add(label);
		panel.setAlignmentY(alignmentY);
		panel.setAlignmentY(alignmentX);
		return panel;
	}
	private class Key implements KeyListener{
		public void keyPressed(KeyEvent e) {
			System.out.println(e.getKeyCode());
			switch(e.getKeyCode()){
				case 10:
					//getContentPane().transferFocus();
					transferFocus();
			}
		}

		public void keyReleased(KeyEvent e) {
		}

		public void keyTyped(KeyEvent e) {
		}
		
	}

}

O problema está quando eu aperto Enter nos Fields (Text e Password).
O que eu queria fazer:
Quando o cursor estivesse no login, e eu apertasse o enter, ele fosse para o password.

O que está fazendo:
Quando estou no password e aperto Enter ele vai para o login, e quando estou no login faz nada.

Se alguém puder me dar uma luz de como resolver isso eu agradeço…
Valeu galera!

Use o método focusGained().
Kina, implementando a interface FocusListener e KeyListener para a classe fica mais ou + assim:
componente.addFocusListener(this) e c addKeyListener(this).
e:

// **********************************************************
   //---Eventos do teclado
   public void keyTyped(KeyEvent ke){
         }
   public void keyReleased(KeyEvent ke){
  	 }
   public void keyPressed(KeyEvent ke){
  	if(ke.getKeyCode() == ke.VK_ENTER){ 
           componente = (Component) ke.getSource(); 
           componente.transferFocus();
           componente=null;  
       }  
           	                          }
           	                          
    /*************Eventos do Ouvinte de Foco***********************/
    public void focusGained(FocusEvent e) { 
      if (focuscolor) { 
         // Pega o componente de onde veio o evento 
         Component c = e.getComponent(); 

         if (focusselect) { 
            if (c instanceof JTextField) 
                ((JTextField) c).selectAll(); 
         } 
         // transfere o foco para o proximo componente 
         temp_background = c.getBackground(); 
         c.setBackground(background); 
         c = null; 

      } 
   } 
  focusLost(FocusEvent fe)
   if(focuscolor)
       e.getComponent()setBackground...
   blablabla...

Detalhe:focusselect e focuscolor são do tipo boolean!