Chamar objeto de outra Classe

Ola comunidade…
Galera tenho um objeto Pai que ao iniciar ele pede usuario e quando clicamos em Ok ele abre um outro filho e la onde quero chamar o Usuario nao estou conseguindo quando é aberto o Filho ao clicar em Ok ele deveria mostrar o Usuario que esta em Pai mas nao consigo fazer isto, segue abaixo::

[color=blue]
//Classe Pai.java

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

public class Pai extends JFrame implements ActionListener{
public JTextField txtusuario;
public String usuario;
public JButton btn;
private Container cont;
private JPanel painel;

   public Pai(){
          super("Teste");
          BorderLayout layout = new BorderLayout();
          cont = getContentPane();
          cont.setLayout(layout);

          painel = new JPanel(new FlowLayout(FlowLayout.LEFT));

          txtusuario = new JTextField(20);
          painel.add(txtusuario);

          JButton btn = new JButton("OK");
          painel.add(btn);
          btn.addActionListener(this);

          cont.add(painel);
          setLocationRelativeTo(null);
          setResizable(false);
          setSize(300,70);
          setVisible(true);

    }

    public static void main(String args[]) {
           new Pai();
    }
    public void actionPerformed(ActionEvent e) {
           if (e.getActionCommand() == "OK")  PegarValor();
    }

    public void PegarValor() {
           Filho filho = new Filho();
    }

    [/color][color=green]//nao sei se é este o jeito de fazer._____[/color][color=blue]
    public void getUsuario(){    //retorna o usuario
           usuario = txtusuario.getText();

    }

} //fim [/color]

[color=red]__________________________________________________[/color]

[color=green]// Classe Filho

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

public class Filho extends JFrame implements ActionListener {
private JButton botao;
Pai pai;
private Container cont;
private JPanel painel;

   public  Filho(){
          cont = getContentPane();
          BorderLayout layout = (new BorderLayout());
          cont.setLayout(layout);

          painel = new JPanel(new FlowLayout(FlowLayout.LEFT));

          botao = new JButton("Pegar Usuario do Pai");
          botao.addActionListener(this);
          painel.add(botao);

          cont.add(painel);

          setSize(300,300);
          setResizable(false);
          setVisible(true);
          setLocationRelativeTo(null);
    }
    public void actionPerformed(ActionEvent e){
           if (e.getSource() == botao) Retornar();
    }

    [/color][color=blue]//____acho que o problema esta aqui___________[/color][color=green]
    public void Retornar() {        //pega Usuario  do Pai, mas nao estou conseguindo fazer isto
           pai.PegarValor();
           JOptionPane.showMessageDialog(null, pai.usuario);
    }

}//fim [/color]

[color=red]_____________________________________________[/color]

pensei em fazer uma classe abstrata, mas nao sei qual é o modo mais correto, se alguem puder me ajudar eu agradeço.

obrigado
Adriano

Prmeiro declara esta linha public static Pai pai; na Classe pai.
Mude aqui
public static void main(String args[]) {
pai = new Pai();
}

aqui

[i]public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == “OK”)
setUsuario(txtusuario.getText());

	PegarValor();
	
}[/i]

//Este é o jeito de fazer.
//retorna o usuario
public String getUsuario() { 
	 return this.usuario;

}

public void setUsuario(String usuario) {
	this.usuario = usuario;
}

public static Pai getPai() {
	return pai;
}

e por último no filho

[i]//acho que o problema esta aqui_______
public void Retornar() { //pega Usuario do Pai, mas nao estou conseguindo fazer isto
pai = GetInstance(pai);
JOptionPane.showMessageDialog(null, pai.getUsuario());
}
private Pai GetInstance(Pai pai2) {

return pai.getPai();

} [/i]