Bom eu gostaria de poder disabilitar JMenuBar … alguem pode me ajudar ?
Blocar JMenuBar!
11 Respostas
e ai blz!
vc ja tentou o setEnable(false) caso eu tenha entendido sua pergunta corretamente,
falou !! :lol:
Vc tem o menu e os menuItens …beleza digamos que vc tenha o menu tela1- quando vc clicar aparecerá uma tela, mas vc não qujer que ele seja executado 2x, só quando fechar a janela que foi aberta…E`exatamente isso fça
menu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
menu.setEnabled(false);
}}
);
apagou…
então façao o evento de quando a janela for fechada retorna o menu
menu.setEnabled(true);
algho semelhante …Valeu!!
Na verdade queria ser mais chato nao deixando ele acessar todo o menu pensei em questo ;
public void menuStatus(boolean b) {
mnuCli.setEnabled(b);
mnuFor.setEnabled(b);
mnuPro.setEnabled(b);
mnuAju.setEnabled(b);
}
o problema agora è como pego um evento de um JInternalFrame para quando ele for fexado eu retornar tudo true ?
Após a chamada para abertura do JInternalFrame, coloca lá um ativar menu… Num funcionaria não?
Explicando melhor: Não precisaria descobrir o evento… 
O problema è quando eu chamo um JInternalFrame tenho que disabilitar os menus e depois quando eu fexar o JInternalFrame eu devo abilitalos .
O problema è como vou abilitalos quando fechar o JInternalFrame !
De acordo com o javadoc:
Do JInternalFrame
addInternalFrameListener(InternalFrameListener l)
Adds the specified listener to receive internal frame events from this internal frame.
Do InternalFrameListener
internalFrameClosed(InternalFrameEvent e)
Invoked when an internal frame has been closed.
Bom, com isso você pode adicionar um listener para quando você fechar a janela, porém, minha sugestão anterior era a seguinte:
Quando você abre o JInternalFrame, a execução é passada pra ele como thread e a execução continua do chamador, ou a execução para até que o JInternalFrame seja fechado???
Se o último caso é o que acontece, você pode colocar a chamada de desabilitação (ou habilitação) do menu logo após abrir o InternalFrame…
Por exemplo:
Abrir o internal frame (execução passa para o InternalFrame e para no chamador)
Desabilitar (ou habilitar) menus (só é executado quando o JInternalFrame fecha…)
Er… Ficou mais claro ou confundiu mais? :sad:
Me confudiu mais
. Vou tentando dar meus pulos aqui
Valeu !
Bom o problema esta aqui
… Quando a pessoa acessa uma opçao no menu por exec. “Controle de Clientes” vai para o actionPerformed dai disabilito o menu “menu.menuStatus(false)” e chamo o JInternalJFrame tudo ok, e quando ele fecha o JInternalFrame ele deve retornar “menu.menuStatus(true)” mas nao consigo dentro do :
addInternalFrameListener(new InternalFrameAdapter() {
public void internalFrameClosed(InternalFrameEvent e) {
menu.menuStatus(true);
}
} );
erro quando compilo : cannot resolve symbol , symbol : variable menu …
minha soluçao : declarar menu.menuStatus como static , mas me parece que nao è uma boa soluçao ,
alguem pode me ajudar ?
Assim, tentando imaginar é meio difícil… Mas pelo que entendi, o menu não é do JInternalFrame… Sendo assim você deve usar o objeto que contém o menu e só então chamar o comando de “desabilitação”…
Desculpa mais ainda estou aprendendo nao sei oque te digo agora è certo e etc mais la vai .
uma classe principal … extends JFrame … instancia uma classe separada extends JMenuBar(onde contem meu metodo que disabilita o proprio) …
que chama o InternalFrame , eccolo , a dificuldade agora è que para mim poder chamar o metodo que esta no JMenuBar eu teria que declarar com static (levando que eu quero chamalo la do InternalFrame , quando ele for fechado) desse modo com o static funciona benissimo , ma penso que possa haver uma soluçao melhor 
obrigado … e desculpa
Tive uma idéia, olha só: Crie um método construtor pro seu JInternalFrame que receba como parâmetro o JFrame. Quando você for criar o JInternalFrame, passe o this como parâmetro… Beleza até aqui?
Então, lá de dentro do seu JInternalFrame, você vai saber quem o criou… Agora você tem lá dentro um objeto que “aponta para sua janela principal”… Acho que agora você consegue… Tipo assim:
Classe 1
public class JanelaPrincipal extends JFrame{
public static void main(String args[]){
JanelaInterna ji = new JanelaInterna(this);
}
}
Classe 2
public class JanelaInterna extends JInternalFrame{
public JanelaInterna(JanelaInterna chamador){//Construtor
chamador.desabilitaMenuPrincipal();//aqui você consegue “ver” o “chamador”…
}
}
Acho que agora foi!
Se conseguir, não deixa de postar!