E ae galera, blz???
Seguinte estou com um problema de menus. Eu criei uma classe para ter todos os menus e sempre incluir nesta classe novo menu quando necessário, sendo a intenção chamar nas outras VIEW’s esta classe. Funcionou bem até este ponto, porém quando utilizo o menu para abrir uma tela diferente, a tela que estava aberta não é encerrada, ficando assim as duas telas abertas, ocasionando problemas na memória ao abrir várias telas.
Classe onde estão todos os menus:
[code]package essenciais.util;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import email.cadastrar.VIEW.CadastrarEmailVIEW;
import email.cadastrar.controller.CadastrarEmailController;
import email.enviar.VIEW.EmailVIEW;
import email.enviar.controller.EmailController;
import revendedora.cadastrar.controller.RevendedoraController;
import revendedora.cadastrar.view.CadastrarRevendedoraVIEW;
import revendedora.pesquisar.controller.PesquisarRevendedoraController;
import revendedora.pesquisar.view.PesquisarRevendedoraVIEW;
import revista.cadastrar.controller.RevistaController;
import revista.cadastrar.view.CadastrarRevistaVIEW;
import revista.pesquisar.controller.PesquisarRevistaController;
import revista.pesquisar.view.PesquisarRevistaVIEW;
import vendas.cadastrar.controller.VendasController;
import vendas.cadastrar.view.CadastrarVendasVIEW;
import vendas.modificar.controller.ModificarVendasController;
import vendas.modificar.view.ModificarVendasVIEW;
import javax.swing.JInternalFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
public class MenusDasTelas extends JFrame{
private JMenu menuCadastros = null;
private JMenuItem menuCadastroRevendedora = null;
private JMenuItem menuCadastroRevista = null;
private JMenuItem menuCadastroVendas = null;
private JMenu menuVendas = null;
private JMenuItem menuModificarVendas = null;
private JMenu menuEmail = null;
private JMenuItem jMenuItemEmail = null;
private JMenuItem jMenuItemCadastrarEmail = null;
private JMenu menuPesquisar = null;
private JMenuItem jMenuItemPesquisarRevendedora = null;
private JMenuItem jMenuItemPesquisarRevistas = null;
private JMenuBar barraMenu = null;
/**
* This method initializes barraMenu, com todos os menus da classe MenusDasTelas.
*
* @return javax.swing.JMenuBar
*/
public JMenuBar getBarraMenu() {
if (barraMenu == null) {
barraMenu = new JMenuBar();
barraMenu.setPreferredSize(new Dimension(0, 20));
barraMenu.add(getMenuCadastros());
barraMenu.add(getMenuVendas());
barraMenu.add(getMenuEmail());
barraMenu.add(getMenuPesquisar());
}
return barraMenu;
}
/**
*
* Método responsável por controlar o menu CADASTRO em todas as telas
*
* @return
* @author Felipe Luna Scobar <felipe_lunascobar@hotmail.com>
* @since 10/08/2015 11:50:27
* @version 1.0
*/
public JMenu getMenuCadastros(){
if (menuCadastros == null) {
menuCadastros = new JMenu();
menuCadastros.setPreferredSize(new Dimension(70, 5));
menuCadastros.setText("Cadastros");
menuCadastros.add(getMenuCadastroRevendedora());
menuCadastros.add(getMenuCadastroRevista());
menuCadastros.add(getJMenuItemCadastrarEmail());
}
return menuCadastros;
}
/**
* This method initializes menuVendas
*
* @return javax.swing.JMenu
*/
public JMenu getMenuVendas() {
if (menuVendas == null) {
menuVendas = new JMenu();
menuVendas.setText("Vendas");
menuVendas.setBounds(new Rectangle(80, 0, 65, 18));
menuVendas.add(getMenuCadastroVendas());
menuVendas.add(getMenuModificarVendas());
}
return menuVendas;
}
/**
* This method initializes jMenuEmail
*
* @return javax.swing.JMenu
*/
public JMenu getMenuEmail() {
if (menuEmail == null) {
menuEmail = new JMenu();
menuEmail.setText("EMAIL");
menuEmail.add(getJMenuItemEmail());
}
return menuEmail;
}
/**
* This method initializes jMenuPesquisar
*
* @return javax.swing.JMenu
*/
public JMenu getMenuPesquisar() {
if (menuPesquisar == null) {
menuPesquisar = new JMenu();
menuPesquisar.setText("Pesquisar");
menuPesquisar.add(getJMenuItemPesquisarRevendedora());
menuPesquisar.add(getJMenuItemPesquisarRevistas());
}
return menuPesquisar;
}
/**
* This method initializes menuCadastroRevendedora
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMenuCadastroRevendedora() {
if (menuCadastroRevendedora == null) {
menuCadastroRevendedora = new JMenuItem();
menuCadastroRevendedora.setPreferredSize(new Dimension(90, 21));
menuCadastroRevendedora.setText("Revendedora");
menuCadastroRevendedora.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
CadastrarRevendedoraVIEW revendedora = new CadastrarRevendedoraVIEW();
// Alterando a forma de fechamento da tela.
revendedora.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
RevendedoraController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return menuCadastroRevendedora;
}
/**
* This method initializes menuCadastroRevista
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMenuCadastroRevista() {
if (menuCadastroRevista == null) {
menuCadastroRevista = new JMenuItem();
menuCadastroRevista.setText("Revista");
menuCadastroRevista.setPreferredSize(new Dimension(90, 21));
menuCadastroRevista.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
CadastrarRevistaVIEW revista = new CadastrarRevistaVIEW();
// Alterando a forma de fechamento da tela.
revista.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
RevistaController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return menuCadastroRevista;
}
private JMenuItem getMenuCadastroVendas() {
if (menuCadastroVendas == null) {
menuCadastroVendas = new JMenuItem();
menuCadastroVendas.setText("Vendas");
menuCadastroVendas.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
CadastrarVendasVIEW vendas = new CadastrarVendasVIEW();
// Alterando a forma de fechamento da tela.
vendas.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
VendasController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return menuCadastroVendas;
}
/**
* This method initializes menuModificarVendas
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMenuModificarVendas() {
if (menuModificarVendas == null) {
menuModificarVendas = new JMenuItem();
menuModificarVendas.setText("Modificar Vendas");
menuModificarVendas.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
ModificarVendasVIEW vendas = new ModificarVendasVIEW();
// Alterando a forma de fechamento da tela.
//vendas.setVisible( true );
vendas.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// Tornando a tela do EventoBotaoAvancado visivel.
ModificarVendasController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return menuModificarVendas;
}
/**
* This method initializes jMenuItemEmail
*
* @return javax.swing.JMenuItem
*/
public JMenuItem getJMenuItemEmail() {
if (jMenuItemEmail == null) {
jMenuItemEmail = new JMenuItem();
jMenuItemEmail.setText("Enviar E-MAIL");
jMenuItemEmail.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
EmailVIEW email = new EmailVIEW();
// Alterando a forma de fechamento da tela.
email.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
EmailController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return jMenuItemEmail;
}
/**
* This method initializes jMenuItemCadastrarEmail
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemCadastrarEmail() {
if (jMenuItemCadastrarEmail == null) {
jMenuItemCadastrarEmail = new JMenuItem();
jMenuItemCadastrarEmail.setText("E-MAIL");
jMenuItemCadastrarEmail.addActionListener(new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
CadastrarEmailVIEW cadastrarEmail = new CadastrarEmailVIEW();
// Alterando a forma de fechamento da tela.
cadastrarEmail.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
CadastrarEmailController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return jMenuItemCadastrarEmail;
}
/**
* This method initializes jMenuItemPesquisarRevendedora
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemPesquisarRevendedora() {
if (jMenuItemPesquisarRevendedora == null) {
jMenuItemPesquisarRevendedora = new JMenuItem();
jMenuItemPesquisarRevendedora.setText("Revendedora");
jMenuItemPesquisarRevendedora.addActionListener(new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
PesquisarRevendedoraVIEW pesquisarRevendedora = new PesquisarRevendedoraVIEW();
// Alterando a forma de fechamento da tela.
pesquisarRevendedora.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
PesquisarRevendedoraController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return jMenuItemPesquisarRevendedora;
}
/**
* This method initializes jMenuItemPesquisarRevistas
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemPesquisarRevistas() {
if (jMenuItemPesquisarRevistas == null) {
jMenuItemPesquisarRevistas = new JMenuItem();
jMenuItemPesquisarRevistas.setText("Revista");
jMenuItemPesquisarRevistas.addActionListener(new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
PesquisarRevistaVIEW pesquisarRevista = new PesquisarRevistaVIEW();
// Alterando a forma de fechamento da tela.
pesquisarRevista.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
PesquisarRevistaController.getInstance().abrirTela();
//TODO
// Fechando a tela quando chamar algum menu.
dispose();
}
});
}
return jMenuItemPesquisarRevistas;
}
}
[/code]
Método que uso para chamar os menus:
[code] private JMenuBar getBarraMenu() {
if (barraMenu == null) {
barraMenu = new JMenuBar();
MenusDasTelas menusDasTelas = new MenusDasTelas();
barraMenu.setPreferredSize(new Dimension(0, 20));
//Chamando o método da classe MenusDasTelas;
barraMenu.add(menusDasTelas.getBarraMenu());
}
return barraMenu;
}[/code]