Classe para MENUS, não fecha a tela já aberta

1 resposta
Scobar20

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:
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 <[email removido]>
	 * @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;
	}
	
}
Método que uso para chamar os menus:
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;
		
	}

1 Resposta

R

Estou com a mesma dúvida!

Criado 8 de setembro de 2015
Ultima resposta 26 de mar. de 2016
Respostas 1
Participantes 2