Boa noite a todos.
Em primeiro lugar, com MenuItem, voce pode trabalhar um listener de Eventos ActionListener, que funciona como click do mouse.
Em segundo lugar, ao se criar um MenuItem voce deve acrescentá-lo ao JMenu, que porventura esteja acrescentado ao um JMenuBar.
Em terceiro lugar, um MenuItem que invoca um JFrame, tem que verificar sua sua instância não está nula, por que senão voce terá erro de “NullPointer”. Vamos ao possível código:
public class PrimeiraPagina {
// Declarando uma instância do Frame Exposições
private Exposicoes expo = null;
public PrimeiraPagina() {
......
JMenuBar menubar = new JMenuBar();
JMenu mnuframes = new JMenu("Abrir frames");
JMenuItem mItem = new JMenuItem("Exposiçoes");
mItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
if (expo == null) {
expo = new Exposicoes();
expo.setVisible(true);
} else if (expo.isVisible()) {
expo.setVisible(false);
} else {
expo.setVisible(true);
}
}
});
mnuframes.add(mItem);
menubar.add(mnuframes);
....
setJMenuBar(menubar);
....
}
.....
}
Quando voce instancia um classe como se fosse classe anônima desta forma:
...
new Exposicoes().setVisible(true);
...
Ao executar vários clicks no item de menu, voce corre o risco de criar várias instâncias de um mesmo formulário, e o que é pior, com instâncias anônimas, e isto não é uma boa prática de pool.
Um abraço.