NetBeans - Fazer a chamada a um JInternalFrame através de outro JInternalFrame

Eae galera, blz?

Seguinte…, estou desenvolvendo um aplicativo teste MDI. Este aplicativo tem a seguinte estrutura com 3 classes:

FrmPrincipal (JFrame)
IfrmA (JInternalFrame)
IfrmB (JInternalFrame)

FrmPrincipal tem um JMenu com 2 JMenuItem. Um fazendo a chamada ao IfrmA, e o outro chamando IfrmB; utilizando o seguinte código (no FrmPrincipal) para isso:

// JMenuItemA

IfrmA ifrmA = new IfrmA();
ifrmA.setSize(320, 240);
ifrmA.setVisible(true);
desktopPane.add(ifrmA);

// JMenuItemB

IfrmB ifrmB = new IfrmB();
ifrmB.setSize(320, 240);
ifrmB.setVisible(true);
desktopPane.add(ifrmB);

Até aqui tudo bem e sem problemas com o NetBeans…

O IfrmA tem um botão. Eu preciso fazer uma chamada ao IfrmB deste botão do IfrmA e abrir o IfrmB dentro do FrmPrincipal. Confuso neh? heheh. Segue a imagem para explicar melhor.

Cara, fiz umas classes aqui para demonstrar, tentei ser o mais simples possivel para que vc entenda facil.

Ai vao elas :

principal.java

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class principal extends JFrame
{
	private JDesktopPane desktop;
	private JMenuBar menu;
	private JMenu cadastros;
	private JMenuItem clientes;
	
	public principal()
	{
		super("Tela Principal");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setExtendedState(MAXIMIZED_BOTH);
		
		desktop = new JDesktopPane();
		getContentPane().add(desktop);
				
		menu = new JMenuBar();
		setJMenuBar(menu);
		cadastros = new JMenu("Cadastros");
		clientes = new JMenuItem("Clientes");
		
		clientes.addActionListener (
				new ActionListener() { 
					public void actionPerformed(ActionEvent e) { 
						jIFrClientes clients = new jIFrClientes(desktop); 
						desktop.add(clients); 
						clients.setVisible(true); 
						clients.setLocation(90, 215);//localizacao na tela
						try
						{
							clients.setSelected(true);//deixa o frame selecionado
						}
						catch (Exception ex){}
					}
				}
		);
		
		menu.add(cadastros);
		cadastros.add(clientes);
		
		setVisible(true);
		
	}
	
	public static void main(String[] args)
	{
		new principal();
	}
	
}

jIFrClientes.java

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
import javax.swing.JButton;
import javax.swing.JDesktopPane;

public class jIFrClientes extends JInternalFrame implements ActionListener
{
	private JDesktopPane desktop;
	private JButton bconsulta;
	
	public jIFrClientes(JDesktopPane jdesktop)
	{
		super("Cadastros de Clientes", false, true, false, true);
		
		desktop = jdesktop;
		
		bconsulta = new JButton("CONSULTAR");
		bconsulta.addActionListener(this);
		add(bconsulta, BorderLayout.SOUTH);
		
		setSize(400,400);
		setVisible(true);
				
	}
	
	public void actionPerformed(ActionEvent actionEvent) 
	{ 
		String arg = actionEvent.getActionCommand(); 
		
		if (arg.equals("CONSULTAR"))
		{   
			consultaClientes clientsConsulta = new consultaClientes();
			desktop.add(clientsConsulta); 
			clientsConsulta.setVisible(true); 
			try
			{
				clientsConsulta.setSelected(true);
			}
			catch (Exception e1)
			{
				e1.printStackTrace();
			}
			}
		}
}

consultaClientes.java

import javax.swing.JInternalFrame;

public class consultaClientes extends JInternalFrame
{
	
	
	public consultaClientes()
	{
		super("Consulta Clientes", false, true, false, true);
		
		setSize(200,200);
		setVisible(true);
	}
	
}

Espero que ajude, qualquer duvida em relacao ao codigo, pode perguntar.

Falowsss

:oops: cara, to até envergonhado da simplicidade que eh fazer isso ae hehehe. Muito obrigado mesmo! Valeu mesmo!

Trabalhei durante 2 anos com .NET (C# e ASP.NET), mas fiquei muito descontente com essa tecnologia. Microsoft não tem respeito algum pelo desenvolvedor. Por isso, desde o final do ano passado, comecei a estudar e utilizar Java.

Mais uma vez muito obrigado. Longa vida ao Java e ao GUJ.

PS.: em anexo a versão em netbeans caso alguém precise.