Como faço para, quando eu clicar em um pop up do menu, e abrir o meu Jinternalframe ele ficar cinza, ou seja nao poder ser clicado,
e depois que eu fechar o meu jinternalframe ele ativar, sei que posso utilizar o JMenu1.setEnabled(false); para desativa-lo, so que nao consigo
reativalo, utilizando o evento de fechamento do jinternalframe e nem o de closeOperation, para que eu possa setar JMenu1.setEnabled(true);
Nunca vi alguém desabilitar um JPopupMenu. A ação esperada, quando você escolhe algo em um JPopupMenu, é simplesmente fechá-lo e executar a opção escolhida.
F
felipeti
Então, que no meu caso eu necessito que fique bloqueado para que ele so consiga abrir outro JinternalFrame depois que ele fechar a janela aberta.
E
entanglement
Ah, não é um JPopupMenu. Você quer simplesmente desabilitar um item do menu. Vamos ver. Tem alguma coisa que você deve estar fazendo de errado, porque o que você quis fazer é o que normalmente seria feito. Vamos ver se dá para fazer um exemplo simples.
F
felipeti
Então, eu estou fazendo o seguinte :
Metodo que ativa e desativa meu menu
public void habilitarMenu(){
jMenu1.setEnabled(verdadeiro);
}
public void desabilitarMenu(){
jMenu1.setEnabled(falso);
}
E quando eu clico no meu menu e escolho o cadastro que eu quero, ao iniciar a janela, eu seto desabilitarMenu, e eu queria saber como jogar o habilitarMenu quando eu fechar
o JinternalFrame eu jogar o metodo habilitarMenu, estou tentando instanciar a janela que contem o menu e passa pra ela o seguinte :
Dê uma olhadinha neste código. Ele desabilita a opção “Nova Janela” quando a JInternalFrame que você abriu for aberta, e reabilita essa opção quando a JInternalFrame for fechada.
packageguj;importjava.awt.BorderLayout;importjava.awt.EventQueue;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDesktopPane;importjavax.swing.JFrame;importjavax.swing.JInternalFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.event.InternalFrameAdapter;importjavax.swing.event.InternalFrameEvent;publicclassExemploSimplesJDesktopPaneextendsJFrame{privateJMenuBarmenuBar;privateJMenumnJanela;privateJMenuItemmntmNovaJanela;privateJDesktopPanedesktopPane;/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{ExemploSimplesJDesktopPaneframe=newExemploSimplesJDesktopPane();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicExemploSimplesJDesktopPane(){setTitle("Exemplo JInternalFrame");setBounds(100,100,600,600);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setJMenuBar(getMenuBar_1());getContentPane().add(getDesktopPane(),BorderLayout.CENTER);}privateJMenuBargetMenuBar_1(){if(menuBar==null){menuBar=newJMenuBar();menuBar.add(getMnJanela());}returnmenuBar;}privateJMenugetMnJanela(){if(mnJanela==null){mnJanela=newJMenu("Janela");mnJanela.add(getMntmNovaJanela());}returnmnJanela;}privateJMenuItemgetMntmNovaJanela(){if(mntmNovaJanela==null){mntmNovaJanela=newJMenuItem("Nova Janela...");mntmNovaJanela.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){mntmNovaJanela.setEnabled(false);JInternalFramejif=newExemploSimplesJInternalFrame();jif.setClosable(true);desktopPane.add(jif);jif.addInternalFrameListener(newInternalFrameAdapter(){@OverridepublicvoidinternalFrameClosed(InternalFrameEvente){super.internalFrameClosed(e);mntmNovaJanela.setEnabled(true);}});jif.setVisible(true);}});}returnmntmNovaJanela;}privateJDesktopPanegetDesktopPane(){if(desktopPane==null){desktopPane=newJDesktopPane();}returndesktopPane;}}
packageguj;importjava.awt.EventQueue;importjavax.swing.JInternalFrame;publicclassExemploSimplesJInternalFrameextendsJInternalFrame{/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{ExemploSimplesJInternalFrameframe=newExemploSimplesJInternalFrame();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicExemploSimplesJInternalFrame(){setTitle("Teste");setBounds(100,100,450,300);}}
E
entanglement
Aliás, qual seu problema com as constantes “true” e “false”? Esquisito em um código Java usar “verdadeiro” e “falso”. Se é para programar em português, reserve isso para outros identificadores, ou então radicalize e use a linguagem Lua (que foi inventada aqui no Brasil por um pesquisador da UFRJ).