Como chamar uma classe através de outra classe?

3 respostas
S

Desculpe, conheço java, mas tenho problemas com a base, então estou tentando rever esses conceitos!
No momento estou criando um frame que quando eu aperto um botão eu chamo um jInternalFrame, e cada 1 tem sua própria classe, para ficar mais bonito e organizado.
A pergunta é: É possível criar isso e como faço para chamar o jInternalFrame no Frame que eu tenho (já tenho um jDesktopPane no meu frame principal)?

Obrigado

3 Respostas

marcoslogan

Você adiciona o JInternalFrame no JDesktopPane.

Código do botão

JInternalFrame frame = new JInternalFrame();//aqui você instancia JInternalFrame
   JDesktopPane pane = new JDesktopPane();//aqui você instancia JDesktopPane

   pane.add(frame);//aqui estou adicionando o JInternalFrame ao JDesktopPane, pois só assim eu vou poder visualizar o meu "formulário interno".
   pane.setVisible(true);//e aqui estou visualizando o JDesktopPane que já tem adicionado o "formulário interno".

Bom, testa aí, se der pau você deixa uma mensagem aqui, que vou tentar resolver o teu problema.

S

Não é bem isso que eu quis dizer.
É assim:

-Tenho um arquivo: FormMenu.java, onde está meu menu, que chamará diversos internalframes diferentes, e com isso meu programa vai funcionar.
-Tenho outro arquivo: intFrameFuncionario.java, onde está meu internalframe funcionario, e onde estão meus botões que utilizam no banco de dados.
-Agora eu quero adicionar o jInternalFrame criado em “intFrameFuncionario.java” com todos os seus botões dentro do arquivo “FormMenu.java” sem que eu tenha que copiar o código e colar dentro do outro arquivo.

Entenderam?
Qualquer coisa é só falar!

discorpio

Bom dia a todos.

Eu entendi o que voce quer fazer, ou seja, exatamente como ocorre no Delphi em sistemas MDI, no momento em que voce muda o JInternalFrame, ele também muda o Menu Principal, e por incrível que pareça isto é bem simples de fazer:

Crie métodos getMenu dentro de cada JInternalFrame assim:

public JMenuBar getMenu(){

        // Criando o menu principal
        menubar = new JMenuBar();
        cad = new JMenu("Cadastro");
        cons = new JMenu("Consultar");
        rel = new JMenu("Relatórios"); rel.addMenuListener(this);
        sair = new JMenu("Sair"); rel.addMenuListener(this);

        // Ítens do menu cadastro
        ins = new JMenuItem("Incluir"); ins.addActionListener(this);
        alt = new JMenuItem("Alterar"); alt.addActionListener(this);
        del = new JMenuItem("Excluir"); del.addActionListener(this);
        save = new JMenuItem("Salvar"); save.addActionListener(this);
        cancel = new JMenuItem("Cancelar"); cancel.addActionListener(this);
        cad.add(ins); cad.add(alt); cad.add(del); cad.add(save); cad.add(cancel);

        // Ítens do menu consultar
        consproc = new JMenuItem("Por processo"); consproc.addActionListener(this);
        consdata = new JMenuItem("Por data"); consdata.addActionListener(this);
        consvalor = new JMenuItem("Por valor"); consvalor.addActionListener(this);
        consfavor = new JMenuItem("Por favorecido"); consfavor.addActionListener(this);
        consitua = new JMenuItem("Por situação"); consitua.addActionListener(this);
        cons.add(consproc); cons.add(consdata); cons.add(consvalor); cons.add(consfavor); cons.add(consitua);

        menubar.add(cad);
        menubar.add(cons); 
        menubar.add(rel); 
        menubar.add(sair);
 
        return menubar;
    }

Agora na hora de chamar e instanciar o seu JInternalFrame funcionário no Frame principal é só dizer que o Menu ativo será o do JInternalFrame instanciado desta forma:

FrameCadCli cadcli = new FramCadCli();
   MeuJDesktopPane.add(cadcli);
   cadcli.setVisible(true);
   setJMenuBar(cadcli.getMenu());
   pack();
   ....

Voce deve estar perguntando, ora, se eu defini o Menu principal com o menu do JInternalFrame instanciado e seus eventos estão implementados em cada JInternalFrame, será então que o Menu que está no FramePrincipal vai disparar os eventos :?: :?: :?:

Com todo certeza vai, isto porque o JInternalFrame está instanciado em memória, e o disparo dos eventos estão referenciados aos de cada JInternalFrame.

Criado 13 de maio de 2010
Ultima resposta 14 de mai. de 2010
Respostas 3
Participantes 3