[Resolvido]Como passar informações de um JInternalFrame para uma anterior

Olá pessoal,

Já pesquisei pela internet e não encontrei nada que resolva meu problema.

É o seguinte, passarei as classes e depois vou explicar o que quero entender:

EnderecoView.java:

public class EnderecoView extends AbstractInternalFrame
{

	private static final long serialVersionUID = -281703272794664127L;
	
	private JTextField ruaTF;
	private JTextField numeroTF;
	private JTextField complementoTF;
	private JTextField bairroTF;
	private JTextField cidadeTF;
	private JTextField estadoTF;
	private JTextField paisTF;
	private Endereco endereco;
	private PossuiEndereco possuiEndereco;

	public EnderecoView(PossuiEndereco possuiEndereco) 
	{
		super("Endereco", true, true, true, true);
		setSize(505, 340);
		setLocation(10, 10);
		setVisible(true);
		this.possuiEndereco = possuiEndereco;
		
		if(possuiEndereco != null && possuiEndereco.getEndereco() != null)
		{
			EnderecoBC.getInstance().retrieve(possuiEndereco.getEndereco().getId());
		}
		
	}

	protected void initializeFields() 
	{
         //inicializa as JLabels e JTextFields
	}

	@Override
	protected void initializeButtons() 
	{ 
		ActionListener acaoSalvarBT = new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				endereco = new Endereco();
				endereco.setRua(ruaTF.getText());
				endereco.setNumero(Integer.parseInt(numeroTF.getText()));
				endereco.setComplemento(complementoTF.getText());
				endereco.setBairro(bairroTF.getText());
				endereco.setCidade(cidadeTF.getText());
				endereco.setEstado(estadoTF.getText());
				endereco.setPais(paisTF.getText());
                // Aqui deve ocorrer o retorno da instancia Endereco.
				JOptionPane.showMessageDialog(painelFields, "Endereco Salvo.");
				dispose();
			}
		};
		
		JButton salvarBT = new JButton("Salvar");
		
		salvarBT.addActionListener(acaoSalvarBT);
		
		painelButtons.add(salvarBT);
	}
}

FuncionarioView.java:

public class FuncionarioView extends AbstractInternalFrame implements PossuiEndereco{

	private static final long serialVersionUID = -5921659644429282378L;
	
	private JTextField nomeTF;
	private JTextField cpfTF;
	private JTextField emailTF;
	private JTextField telefoneTF;
	private JTextField dataTF;
	private JTextField usuarioTF;
	private JTextField senhaTF;
	private JDesktopPane desktop;
	private PossuiEndereco possuiEndereco;
	private Endereco endereco;
	private EnderecoView frameEndereco;
	
	public FuncionarioView(JDesktopPane desktop) {
		super("Funcionario", true, true, true, true);
		setSize(515, 350);
		setLocation(10, 10);
		setVisible(true);
		this.desktop = desktop;
	}

	@Override
	public void repintar() {
		GridBagConstraints c = new GridBagConstraints();
		JLabel enderecoLB = new JLabel("Endereco: "+endereco.toString(), 40);
		
		// Label Endereco
		
		c.gridx = 0;
		c.gridy = 12;
		c.anchor = GridBagConstraints.NORTHWEST;

		painelFields.add(enderecoLB, c);
		
	}

	@Override
	public Endereco getEndereco() {
		return endereco;
	}

	@Override
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco; 
	}

	@Override
	protected void initializeFields() {
                // inicializa as JLabels e JTextFields
	}

	@Override
	protected void initializeButtons() {
		ActionListener acaoEnderecoBT = new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				frameEndereco = new EnderecoView(possuiEndereco);
				desktop.add(frameEndereco);
				frameEndereco.toFront();
			}
		};
		
		ActionListener acaoSalvarBT = new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				Funcionario funcionario = new Funcionario(getEndereco());
				JOptionPane.showInternalMessageDialog(painelFields,
						endereco.getRua());
				dispose();
			}
			
		};
		
		JButton enderecoBT = new JButton("Endereco");
		JButton salvarBT = new JButton("Salvar");
		
		enderecoBT.addActionListener(acaoEnderecoBT);
		salvarBT.addActionListener(acaoSalvarBT);
		
		painelButtons.add(enderecoBT);
		painelButtons.add(salvarBT);
		
	}

	
}

E a PossuiEndereco.java:

public interface PossuiEndereco extends Repintar{

 	public Endereco getEndereco();

	public void setEndereco(Endereco endereco);
}

O que eu gostaria de saber é como retornar a instancia de Endereco da EnderecoView para a FuncionarioView, quando for apertado o botão salvar da tela EnderecoView.

Segundo a especificação do meu trabalho, deve haver um parametro do tipo PossuiEndereco.

Alguma sugestão?

Olá novamente, consegui resolver meu problema.

O fato é o seguinte, eu não sabia que uma interface poderia instanciar uma classe a quem ela implementa. Ou seja, no caso onde eu citei, na EnderecoView, há um construtor com PossuiEndereco(interface) como parâmetro. Então, quando for chamar pela FuncionarioView, eu posso passar a prórpia instancia de FuncionarioView para o construtor da EnderecoView.

PossuiEndereco = new FuncionarioView();

Foi só pesquisar mais um pouco mais que encontrei a solução. O que no caso eu estava procurando com as palavras chaves erradas, por isso não encontrei antes.

Espero ajudar outras pessoas com esta solução!