GUI-Componentes II

Srs, boa noite!

Estou com dificuldades de capturar dados usando GUI.

Tenho uma classe seu nome é ATM. Ela foi criada com objetivo de gerenciar entrada de dados e validação e á classe Layout onde eu estou tratando meus componentes GUI.

Estou tratando layout com um relacionamento do tipo( tem um ) em ATM. Ou seja estou usando o conceito de “composição”.

Classe ATM:

private boolean userAuthenticated;    //Se usuário foi autenticado 
	private int currentAccountNumber;     //Número atual da conta de usuário 
	private CashDispenser cashDispenser;  //Dispensador para depósito do ATM
	private DepositSlot depositSlot;      //Abertura para depósito do ATM
	private BankDatabase bankDatabase;    //Banco de dados com as informações sobre as contas 
	private Layout layout;                           /LayoutGUI do ATM 

        //Construtor
	public ATM()
	{ 
		
		userAuthenticated = false;			 //Usuário não foi autenticado para iniciar
		currentAccountNumber = 0; 			 //Nenhum número atual de conta para iniciar
		cashDispenser = new CashDispenser(); //Cria o dispensador de células	( Instância de Objetos )
		depositSlot = new DepositSlot();     //Cria a abertura para depósito 	( Instância de Objetos )
		bankDatabase = new BankDatabase();   //Cria o banco de dados com informações sobre contas ( Instância de Objetos )
		layout = new Layout();

Tenho um método que tem função de autenticar o usuário conforme dados oriundos da classe Layout.

private void authenticateUser()
	{		     
					
		int accountNumber = layout.getInputNumConta();			
		screen.displayMessage( "\nEnter your PIN:" );   //Solicita o PIN
		int pin = keypad.getInput();				    //Insere o PIN
		
		
		//Configura userAuthenticated com um valor boolean retornado pelo banco de dados
		userAuthenticated = 
			bankDatabase.authenticateUser( accountNumber, pin );
			
		//Verifica se a autenticação foi bem-sucedida 
		if( userAuthenticated )
		{
			
			currentAccountNumber = accountNumber; //Salva a conta do usuário #
		}
		else
			screen.displayMessageLine(
				"Invalid account number or PIN. Please try again" );		
	}//Fim do método authenticateUser

Minha dificuldade está exatamente aqui********
Observei que quando o construtor carrega os dados á variável ( accountNumber ) recebe um valor antes do método getInputNumConta ser executado na classe Layout. O registro é validado antes que usuário digite em tela.
Se alguém puder me ajudar, eu agradeço antecipadamente.

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import java.awt.FlowLayout;
import javax.swing.JOptionPane;


public class Layout extends JFrame
{
	private JLabel     labelPassword;  	//Label do campo senha
	private JTextField fieldPassword; 	//Campo de texto para senha
	private JButton    buttonOK;      	//Botão de validação
	private int numConta = 0;		
	
	//Construtor 
	public Layout()
	{
		super( "Numero da conta" );
		System.out.print("Construtor");
		setLayout( new FlowLayout() ); //Configura o layout para nulo
						
		//Constrói um Label
		labelPassword = new JLabel( "Número da Conta" );
		labelPassword.setBounds( 1, 1, 35, 35 );	
		add( labelPassword ); //Adiciona campo no layout
		
		//Constrói um Field
		fieldPassword = new JTextField( 10 );
		fieldPassword.setBounds( 80, 10, 100, 20 );	
		add( fieldPassword ); //Adiciona campo no layout
		
		//Constrói botão
		buttonOK = new JButton( "Confirmar" );
		buttonOK.setVisible( true );
		add( buttonOK );
		buttonOK.addActionListener(
			
			new ActionListener() //Classe anônima
			{
				String conta;
				
				//Trata evento de botão
				public void actionPerformed( ActionEvent event )	
				{
					conta    = 	fieldPassword.getText();
					numConta = Integer.parseInt( conta );
					setVisible( false );	
						
				}	
			}
		);
		
		setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		setSize( 200, 200  );
		setVisible( true );	
				
	}//Fim do construtor			
	
			
	//Captura e retorna número da conta
	public int getInputNumConta()
	{		
		return numConta;
	}	
}//Fim classe