Implementando JInternalFrame__N O__B R A Ç O;

Bem gente é isso ai meu problema tá super complicado agora, como eu mesmo já falei antes em outros tópicos estou migrando um de meus sistemas feitos em clipper para java.
E como esse é meu primeiro desenvolvimento sério depois de mais de um ano de estudo sobre java, resolvi escrever esse projeto todo no braço para conseguir um certo domínio da da linguagem. Alem do mais eu sou CLIPPEIRO e acostumado a trabalhar no braço. :smiley:

Montei toda a tela inicial do meu sistema, agora chegou a hora de montar as telas de cadastro. Eu cheguei a começar a criar as telas de cadastro usando JFrame e chamando com setVisible(true), mas percebi que dessa forma fica duas janelas abertas no sistema operacional. Já imaginou se eu abro 4 frames ao mesmo tempo no meu sistema? serião 4 janelas abertas na barra de tarefas do windows deixando a coisa meio louca. Foi quando então conheci o bendito JInternalFrame que são frames que abrem internamente dentro do frame principal. Mas estou numa put%$¨@* dificudade para implementar isso no braço. Então queria a ajuda de vocês para consegui colocar isso nos eixos.

Primeiramente deixa eu explicar e mostrar um pouco como está a estrutura do meu sistema.

Tenho um form chamado provisoriamente de FormPrincipal que é onde está localizado meu método main. Nesse forme eu tenho montada toda a parte da tela principal do programa (ex. menus, itens de menus, barra de ferramentas, botões, etc…). Tenho tb uma classe localizada num arquivo .java separado chamada de EventosGUI, nessa classe eu trato toda a parte de eventos de componentes swing do sistema.
para criar a tela de cadastro eu criei um novo arquivo .java que terá toda a parte gráfica da tela de cadastros. É agora que vem a bronca.

abaixo meu arquivo .java para tela de cadastros.

[code]package GUI;

/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

import javax.swing.*;

class cad_clientes extends JInternalFrame{

Imagens icones = new Imagens();

public cad_clientes() {

    setTitle("Arquivo de clientes");
    setSize(1024, 768);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    getContentPane().setLayout(null);
    //setIconImage(new ImageIcon("Icones/clientesico.png").getImage());



}

}[/code]

agora abaixo a linha do arquivo .java que contém meu main responsável pela chamada do InternalFrame

agora abaixo meu arquivo .java que contém minha classe EventosGUI

[code]/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

package GUI;
import java.io.; //Importa o pacote de entrada e saída de dados.
import java.awt.event.
; //Importa o pacote de eventos dos componentes GUI.
import javax.swing.*; //Importa o pacote swing.
import javax.swing.ImageIcon;

class EventosGUI {

Imagens imagem_e_icon = new Imagens();

//Eventos de click e press. enter
public ActionListener execcalc = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {

        try {
		Runtime.getRuntime().exec("cmd.exe /C start calc.exe");
        }
        catch(IOException exceio) {
    	exceio.printStackTrace();
        }
        catch(Exception exce) {
		exce.printStackTrace();
        }
    }

};

public ActionListener sair = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {

        System.exit(0);
    }
};

public ActionListener sobre = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {
        JOptionPane.showMessageDialog(null,
                "SCRIPTER Sistema de Estoque e Vendas\nVersão 1.0\nEscrito por: MATHEUS SARAIVA",
                "Sobre o SCRIPTER", JOptionPane.INFORMATION_MESSAGE,
                new ImageIcon("Icones/foto.png"));
    }
};

public ActionListener cadastro_clientes = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {
       
               
    }
};
    //Eventos de passar o mouse
public MouseListener passmouse_arquivo = new MouseListener() {
    public void mouseEntered(MouseEvent mouseemcima) {}
    public void mouseClicked(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e){}
    public void mouseExited(MouseEvent e) {}


};

}[/code]

Então gente vocês podem ver que eu separei por arquivos, um .java pra tela principal, outro .java pra manipular os eventos e outro .java para montar a tela de cadastro de clientes no caso.

não vou aqui colocar o que eu já tentei fazer pq eu fiz tantos testes e tive cada resultado que não gosto nem de lembrar :smiley:

gostaria que baseados em tudo que informei vocês me sugerissem uma solução. de preferência que eu possa implementas usado a mesma estrutura que já existe, digo, sem precisar fazer mudanças drásticas no código, isso se for possível, se não for sugiram da forma que der.

Bem é isso

grato por toda a ajuda.

Crie um JDesktopPane no seu JFrame, e nele adicione os JInternalFrames de cada tela.

[]'s

hehe :slight_smile: Já fiz isso mas não deu em nada.

O problema maior é que não estou sacando como poderei fazer a implementação se eu tenho o frame principal, o tratamento de eventos, o frame de cadastros cada um em um arquivo .java separado.
Já tentei istanciar um objeto do frame de clientes na classe de eventos e setar setVisible(true); tentei usar a classe e eventos para adicionar o JDesktopPane ao frame principal só quando fosse clicado no menu clientes. Fiz tudo.

A hierarquia para o uso do JInternalFrame (JFrame => JDesktopPane => JInternalFrame) eu já conheço porém fiz várias tentativas sem sucesso.
Se estivesse tudo num arquivo só seria mais simles mas o código ficaria imenso.

Felagund agradeço por ter dedicado um pouco do seu tempo pra tentar resolver meu problema, mas acho que o mais ideal seria alguém tentar pegar os códigos que eu já escrevi e implementar um exemplo usando eles pra eu poder entender como devo proceder no meu caso especifico e não em um modo generalizado.

Senão todos acabaram citando soluções das quais eu já tentei e não tive sucesso. Mostrando a solução usando o código fica mais claro pq eu posso está pecando por pequeno detalhe.

Grato.

Procure pelo padrão Observer

:slight_smile:

Boa! Eu tinha lido algo sobre isso a algum tempo atrás.

Mas deixa ver se eu entendo como adapatar ao meu caso, tipo, o meu frame de clientes vai observar meu EventosGUI e ver quando ele recebe um evento no

[code]public ActionListener cadastro_clientes = new ActionListener() {
public void actionPerformed(ActionEvent clickenter) {

    }[/code]

ai quando o frame de clientes observar o evento ele se seta como setVisible(true);

mas não to sacando como fazer isso na prática.

cont…

seria assim

[code]package GUI;

/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

import javax.swing.*;

class cad_clientes extends JInternalFrame implements Observer{

Imagens icones = new Imagens();  

public cad_clientes() {  

    setTitle("Arquivo de clientes");  
    setSize(1024, 768);  
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
    getContentPane().setLayout(null);  
    //setIconImage(new ImageIcon("Icones/clientesico.png").getImage());  



}

public observa_clic() {

      EventosGUI abre_clientes = new EventosGUI();
      abre_clientes.addObserver(this);
      abre_clientes.cadastro_clientes();
}

public void update(Observer o, Object args) {

cad_clientes.setVisible(args);

}

}
[/code]

e o ActionListener assim

[code]public ActionListener cadastro_clientes = new ActionListener() {
public void actionPerformed(ActionEvent clickenter) {

    setChanged()           //que eu não sei pra q serve.
    notifyObservers(true)
         
    }

}
[/code]

é isso?

Olá Matheussilva,
Bem eu tb estou fazendo o meu estágio da faculdade usando java. e criando tudo no BRAÇO.

Bem estou usando internaisframe e o que eu faço é parecido com o que vc faz.
eu faço o seguinte. vou dar um pequeno exemplo

essa e’ a tela principal do sistema

import java.awt.Container;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JDesktopPane;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swingJMenuItem;

public class JFramePrincipal extends JFrame{

    private Container painel = getContentPane();
    private static JDesktopPane desktop;
    private JMenuBar menubar;
    private JMenu Cadastro;
    private static JMenuItem CadCliente;

   public JFramePrincipal(){
      setFrame();
      setComponent();
   }

   private void setFrame(){
      setTitle("Titulo da Frame");
      setSize(800,600);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(false);
  }

  private void setComponent(){
      painel.setLayout(new BorderLayout());
      desktop = new JDesktopPane();
      painel.add(desktop,"Center");

      menubar = new JMenuBar();
      setJMenuBar(menubar);
      
       Cadastro = new JMenu("Cadastro");
      menubar.add(Cadastro);

      CadCliente = new JMenuItem("Cliente");
      Cadastro.add(CadCliente);
      [b]Cadcliente.addActionListener(new Eventos());[/b]
  }

   public static JDesktopPane getDesktop(){
        return desktop;
   }  

   public static JMenuItem getCadCliente(){
       return CadCliente;
   }

Classe de eventos

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Eventos implements ActionListener{

   //Sua internalframe principal
   Private MeuInternalFrame iframe;

   public void actionPerformed(ActionEvent evt){
       if(evt.getSource() == JFramePrincipal.getCadCliente()){
            if(iframe == null || !iframe.isVisible()){
               iframe = new MeuCadCliente();
               JFramePrincipal.getDesktop().add(iframe);
               iframe.setVisible(true);
            }
       }
   }
}

Sua Internalframe

import java.swing.JInternalFrame;

public class MenuInternalFrame extends JInternalFrame{

   public void setInternalFrame(int Sizex, int Sizey, String title, boolean redimensionar,
            boolean fechar, boolean maximizar, boolean minimizar) {

        setSize(Sizex, Sizey);
        setTitle(title);
        setResizable(redimensionar);
        setClosable(fechar);
        setMaximizable(maximizar);
        setIconifiable(minimizar);

       [b] setVisible(false);
        setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);[/b]
             
    }

}

seu Cadastro de Cliente

public class MenuCadCliente extends MeuInternalFrame{

   public MenuCadCliente(){
      setInternalFrame(800,600, "Cadastro de Cliente",false,true,false,true);
   }
}

bem e’ mais ou menos isso que eu faço, não sei se vai resolver

mas esta ai
falow
}

caramba, só muito amor a profissão mesmo em, bem gente eu editei minha classe main deixando só o necessário e vou postar tudo aqui pra que vcs possam analizar e ver o que está errado.
A bronca é que quando chamo o JInternalFrame ele não aparece.

código main

[code]package GUI;

/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

import javax.swing.*; //Importa o pacote gráfico swing.
class frame_de_teste extends JFrame{

		//Define as variaveis dos componentes swing.
private JMenu Arquivo, manut_dados;
private JMenuItem clientes;
private JMenuBar barra_menu = new JMenuBar();			//Cria uma barra de menus.
private static JDesktopPane frame_pri_desktop = new JDesktopPane();

private EventosGUI Ouvir = new EventosGUI();

public frame_de_teste() {

    setTitle("SCRIPTER Sistema de Estoque");		//Título do frame.
    setSize(1024,768);								//Tamanho do frame.
    setLocation(100,50);							//Posição do frame na tela quando não maximizado.
    setExtendedState(JFrame.MAXIMIZED_BOTH);		//Frame abre já maximizado.
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//Fecha a plicação ao clicar no botão fechar do frame.
    getContentPane().setLayout(null);				//Define que os componentes GUI serão dispostos manualmente.
    setJMenuBar(barra_menu);						//Define esta barra como padrão.
    getContentPane().add(frame_pri_desktop);

    //Montagem de Menus
    Arquivo = new JMenu("Arquivo");								//Monta o menu ARQUIVO.
    manut_dados = new JMenu("Manutenção");                      //Monta o submenu MANUTENÇÃO.
    clientes = new JMenuItem("Clientes");

    clientes.setToolTipText("Realiza modificações no arquivo de clientes");

    //adiciona menus e sub-menus
    barra_menu.add(Arquivo);									//Adiciona o menu Arquivo na barra de menus.
    Arquivo.add(manut_dados);									//Adiciona o submenu manut_dados ao menu Arquivo.
    manut_dados.add(clientes);									//Adiciona o sub-submenu clientes ao submenu Manutenção.

    clientes.addActionListener(Ouvir.cadastro_clientes);

 }

 public static void main(String[] args) {

     JFrame framemainteste = new frame_de_teste();
     framemainteste.setVisible(true);

    }

 public static JDesktopPane getDesktop() {
     return frame_pri_desktop;
 }

}[/code]

código InternalFrame de clientes

[code]package GUI;

/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

import javax.swing.*;

class cad_clientes extends JInternalFrame{

Imagens icones = new Imagens();

public cad_clientes() {

    setTitle("Arquivo de clientes");
    setSize(1024, 768);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    getContentPane().setLayout(null);
    setMaximizable(true);                   //permite a maximização da janela.
    setResizable(true);                     //permite o redimensionamento manual da janela.
    setClosable(true);                      //permite o fechamento manual da janela.
    setIconifiable(true);                   //permite a minimização da janela.
    setVisible(false);



}

}[/code]

e código EventosGUI

[code]/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

package GUI;
import java.io.; //Importa o pacote de entrada e saída de dados.
import java.awt.event.
; //Importa o pacote de eventos dos componentes GUI.
import javax.swing.*; //Importa o pacote swing.
import javax.swing.ImageIcon;

class EventosGUI {

Imagens imagem_e_icon = new Imagens();
private cad_clientes manut_clientes = new cad_clientes();

public ActionListener execcalc = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {

        try {
		Runtime.getRuntime().exec("cmd.exe /C start calc.exe");
        }
        catch(IOException exceio) {
    	exceio.printStackTrace();
        }
        catch(Exception exce) {
		exce.printStackTrace();
        }
    }

};

public ActionListener sair = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {

        System.exit(0);
    }
};

public ActionListener sobre = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {
        JOptionPane.showMessageDialog(null,
                "SCRIPTER Sistema de Estoque e Vendas\nVersão 1.0\nEscrito por: MATHEUS SARAIVA",
                "Sobre o SCRIPTER", JOptionPane.INFORMATION_MESSAGE,
                new ImageIcon("Icones/foto.png"));
    }
};

public ActionListener cadastro_clientes = new ActionListener() {
    public void actionPerformed(ActionEvent clickenter) {
        //JOptionPane.showMessageDialog(null, "Funcionando");
        frame_de_teste.getDesktop().add(manut_clientes);
        manut_clientes.setVisible(true);
               
    }
};
    //Eventos de passar o mouse
public MouseListener passmouse_arquivo = new MouseListener() {
    public void mouseEntered(MouseEvent mouseemcima) {}
    public void mouseClicked(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e){}
    public void mouseExited(MouseEvent e) {}


};

}[/code]

nem que eu faça para aparecer o InternalFrame direto logo quando abrir o programa como segue abaixo

metodo main

[code]package GUI;

/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

import javax.swing.*; //Importa o pacote gráfico swing.
class frame_de_teste extends JFrame{

		//Define as variaveis dos componentes swing.
private JMenu Arquivo, manut_dados;
private JMenuItem clientes;
private JMenuBar barra_menu = new JMenuBar();			//Cria uma barra de menus.
private static JDesktopPane frame_pri_desktop = new JDesktopPane();

private EventosGUI Ouvir = new EventosGUI();
private cad_clientes frame_interno = new cad_clientes();

public frame_de_teste() {

    setTitle("SCRIPTER Sistema de Estoque");		//Título do frame.
    setSize(1024,768);								//Tamanho do frame.
    setLocation(100,50);							//Posição do frame na tela quando não maximizado.
    setExtendedState(JFrame.MAXIMIZED_BOTH);		//Frame abre já maximizado.
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//Fecha a plicação ao clicar no botão fechar do frame.
    getContentPane().setLayout(null);				//Define que os componentes GUI serão dispostos manualmente.
    setJMenuBar(barra_menu);						//Define esta barra como padrão.
    frame_pri_desktop.add(frame_interno);
    getContentPane().add(frame_pri_desktop);


    //Montagem de Menus
    Arquivo = new JMenu("Arquivo");								//Monta o menu ARQUIVO.
    manut_dados = new JMenu("Manutenção");                      //Monta o submenu MANUTENÇÃO.
    clientes = new JMenuItem("Clientes");

    clientes.setToolTipText("Realiza modificações no arquivo de clientes");

    //adiciona menus e sub-menus
    barra_menu.add(Arquivo);									//Adiciona o menu Arquivo na barra de menus.
    Arquivo.add(manut_dados);									//Adiciona o submenu manut_dados ao menu Arquivo.
    manut_dados.add(clientes);									//Adiciona o sub-submenu clientes ao submenu Manutenção.

    clientes.addActionListener(Ouvir.cadastro_clientes);

 }

 public static void main(String[] args) {

     JFrame framemainteste = new frame_de_teste();
     framemainteste.setVisible(true);

    }

 public static JDesktopPane getDesktop() {
     return frame_pri_desktop;
 }

}[/code]

InternalFrame

[code]package GUI;

/**

  • @SCRIPT Informática e Sistemas
  • Aplicação de Estoque
  • @Matheus Saraiva
  • @version 1.00 2009/6/9
    */

import javax.swing.*;

class cad_clientes extends JInternalFrame{

Imagens icones = new Imagens();

public cad_clientes() {

    setTitle("Arquivo de clientes");
    setSize(1024, 768);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    getContentPane().setLayout(null);
    setMaximizable(true);                   //permite a maximização da janela.
    setResizable(true);                     //permite o redimensionamento manual da janela.
    setClosable(true);                      //permite o fechamento manual da janela.
    setIconifiable(true);                   //permite a minimização da janela.
    setVisible(true);



}

}
[/code]

nem assim ele aparece.

agora pelo amor de Deus me digam onde está o erro :cry:

Bem consegui algum avanço. comparando o que eu fiz agora com o que eu ja tinha feito antes conclui o seguinte, como eu estou trabalhando com eu estou trabalhando com setLayout(null); eu precisava setar manualmente o tamanho e o posicionamento do JDesktopPane e também do JinternalFrame com o comando setBounds();

agora está aparecendo o JDesktop e o JinternalFrame, porém para aparecer eu setei dentro do construtor do Internalframe que ele seria Visible(true) assim logo quando abro minha aplicação aparece de cara a tela principal o JDesktop e o Internalframe nele.
Não estou conseguindo deixar Visible(false); e usar uma classe externa que no caso é minha classe tratadora de eventos EventosGUI para setar o Visible para true e fazer ela aparecer. Tentei criar uma instância do meu Internalframe e setar o objeto para

Obj.setVisible(true); mas não acontece nada. alguém poderia me dar uma luz de como fazer isso?

matheus,
se vc esta tentando fechar a internalframe

usa o metodos dispose

  obj.dispose();

vou ver se eu passo alguma coisa pra vc ai
dai uma olhada no codigo que escrevi acima
falow

Hum… se eu fosse um de vocês, não usaria JDesktopPane/JInternalFrame, exceto no caso em que você precisa de múltiplas janelinhas funcionando ao mesmo tempo (como um console para negociação de ações).
Em uma aplicação comercial normal você é mais bem servido com um JTabbedPane - veja o seu browser (Firefox ou IE 7 ou 8), ele é uma aplicação (que tem várias tabs) que funciona dessa maneira).

Não estou tentando fechar o Internalframe estou tentando fazer com que ele abra só depois que eu clicar no item cliente do menu arquivo. acima eu coloquei todo o código do sistema contendo o main e tudo mais, quando postei esse código acima eu não estava conseguindo abrir o Jinternalframe nem se eu definisse ele como setVisible(true); no método construtor dele. depois de bater a cabeça consegui fazer o JInternalframe aparecer, faltava apenas definir as dimensões do Jdesktop e do jinternalframe com o comando setBounds(); agora o JInternalFrame aparece instantaneamente quando eu executo a aplicação porque eu defini ele como Visible(true) logo no construtor dele por isso que ele aparece na hora que eu executo o meu main.
Para solucionar isso eu teria que definir ele como Visible(false) no método contrutor e apos clicar em um menu ou botão definir ele como Visible(true), pq é o setVisible(true); que faz ele aparecer.

O que estou tentando fazer é usar um arquivo .java separado que no caso é o meu EventosGUI para mudar o status dele de setVisible(falso); para setVisible(true);.

Tentei instanciar um objeto da classe cad_cliente e setar nesse objeto o setVisible(true), mas não vinga.

:evil: a cagada toda é pq eu estou tratando os eventos, ou seja, definindo os metodos actionPerformed em um arquivo .java separado do arquivo onde está o metodo main.

ai não consigo ter acesso direto ao metodo para poder setalo como Visible(true).

vejam só

[code]package GUI;

/**
*

  • @author Administrador
    */
    public class testaframeinterno extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public testaframeinterno() {
    initComponents();
    }

    @SuppressWarnings(“unchecked”)
    //
    private void initComponents() {

     jButton1 = new javax.swing.JButton();
     jDesktopPane1 = new javax.swing.JDesktopPane();
     jInternalFrame1 = new javax.swing.JInternalFrame();
    
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     getContentPane().setLayout(null);
    
     jButton1.setText("chama internalframe");
     jButton1.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jButton1ActionPerformed(evt);
         }
     });
     getContentPane().add(jButton1);
     jButton1.setBounds(180, 20, 180, 23);
    
     jInternalFrame1.setClosable(true);
    
     jInternalFrame1.setBounds(30, 30, 460, 320);
     jDesktopPane1.add(jInternalFrame1);
     //jDesktopPane1.add(jInternalFrame1, javax.swing.JLayeredPane.DEFAULT_LAYER);
    
     getContentPane().add(jDesktopPane1);
     jDesktopPane1.setBounds(20, 60, 530, 370);
    

    }//

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    jInternalFrame1.setVisible(true);
    }

    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    new testaframeinterno().setVisible(true);
    }
    });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JDesktopPane jDesktopPane1;
    private javax.swing.JInternalFrame jInternalFrame1;
    // End of variables declaration

}
[/code]

Nesse pequeno exemplo da certo. mas pq da certo ??? pq esta TUDOOOOOOOO apenas de um unico arquivo .java assim vc pode ter acesso direto as variaveis, objetos, metodos, etc…

mas e no meu caso? que tenho um arquivo .java para o menu principal, outro arquivo .java só para tratar os eventos actionPerformed
e outro .java com o JInternalFrame que será minha janela de cadastro de clientes.

é nisso que eu estou parado.

S O L U C I O N A D O

http://www.youtube.com/watch?v=jUB8Lcr5OTU&feature=email

não era isso que eu queria fazer mas serviu como base sólida para resolver o meu problema pois o que eu queria fazer era igualmente isso.

arquivo.java X = JFrame+JDesktopPane ou JPanel;

arquivo.java Y = JInternalFrame;

arquivo.java Z = X + Y;

usar um método existente em um arquivo.java separado para fazer a conexão do X (JFrame) com o Y (JIternalFrame), ou seja, a função do meu arquivo Z é adicionar o JInternalFrame que está no arquivo Y ao JFrame do arquivo X.

Depois de passar por essa dificuldade me veio a seguinte exclamação…

Como vcs fariam se fossem criar um sistema completo de automação comercial?

Criariam todas a Janelas que o sistema iria chamar dentro do mesmo arquivo .java do menu principal?

Já pensaram no tamanho que ficaria o código de vcs?

Bem! Talvez em todas as minhas resposta nesse tópico eu tenha me expressado mal :?