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.