Galera , montei um MDI simples e criei dois JMenu e dois JMenuItem , na hora de pegar o evento desses caras , só vem o do primeiro Menu , o do segundo não vem…
Segue o código…é a primeira vez que posto código aqui , vamos ver se consigo…
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
public class ExemploMdi extends JFrame {
private JMenuBar mainMenu = null;
private JMenu mnPrinc = null;
private JMenu mnFinalizar = null;
private JMenuItem mnNovo = null;
private JMenuItem mnSair = null;
private JMenuItem mnTeste = null;
private JDesktopPane mdiPane = null;
public static int nrForm = 1;
public static int fy = 0;
public static int fx = 0;
/**
* Método que será executado quando o menu
* for clicado, que neste caso será gerado
* um novo frame MDI e será exibido no
* JDesktopPane.
* @param e Recebe o evento
*/
private void mnNovoPerformed(ActionEvent e) {
/* Veja que aki estou usando a classe base
* porém poderia ser por exemplo um tela sua
* que estivesse extendendo JInternalFrame,
* algo tipo:
* JInternalFrame mdiFrame = new MeuFrameCadastroCliente();
*/
JOptionPane.showMessageDialog(null,e.getActionCommand());
if (e.getActionCommand().equals("Novo")){
JInternalFrame mdiFrame = new JInternalFrame(
"Novo Frame MDI #"+ String.valueOf(nrForm++),
true, //resizable
true, //closable
true, //maximizable
true //iconifiable
);
mdiFrame.setSize(new Dimension(300, 250));
mdiFrame.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
mdiFrame.setVisible(true);
getMdiPane().add(mdiFrame);
mdiFrame.setLocation(fx,fy);
fx += 10;
fy += 10;
try {
mdiFrame.setSelected(true);
} catch (PropertyVetoException ex) {}
} else if (e.getActionCommand().equals("Sair")){
JOptionPane.showMessageDialog(null,"TESTE SAINDO");
//JFrame.DISPOSE_ON_CLOSE
}
}
private void addEvent() {
mnNovo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
mnNovoPerformed(e);
}
}
);
}
private JDesktopPane getMdiPane() {
if (mdiPane == null) {
mdiPane = new JDesktopPane();
}
return mdiPane;
}
private JMenuBar getMainMenu() {
if (mainMenu == null) {
mainMenu = new JMenuBar();
mnPrinc = new JMenu("Principal");
mnPrinc.setMnemonic(KeyEvent.VK_P);
mnFinalizar = new JMenu("Finalizar");
mnFinalizar.setMnemonic(KeyEvent.VK_F);
mnNovo = new JMenuItem("Novo");
mnNovo.setMnemonic(KeyEvent.VK_N);
mnSair = new JMenuItem("Sair");
mnSair.setMnemonic(KeyEvent.VK_S);
mnPrinc.add(mnNovo);
mnFinalizar.add(mnSair);
mainMenu.add(mnPrinc);
mainMenu.add(mnFinalizar);
}
return mainMenu;
}
private void initialize() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(getMainMenu(), BorderLayout.NORTH);
this.getContentPane().add(getMdiPane(), BorderLayout.CENTER);
addEvent();
this.setSize(new Dimension(640, 480));
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setTitle("Exemplo Aplicação MDI");
this.show();
}
public ExemploMdi() {
initialize();
}
}