Sistema Desktop mais Logout

Bem pessoal estou aqui fazendo um sistema a parte do login está tudo tranquilo
cadastro usuário, ele loga no sistema e tem algumas verificações no banco. Na tela do menu eu passo
a String do login do usuário, mais 1 ImageIcon… e jogo dentro de um JMenu, que está em um JFrame.
Bem o meu problema é que eu quero fazer o Logoff e que o sistema retorne para a tela de Login.
Segue parte do meu código…

Esse é o Menu onde eu passo a String do Login no método construtor
e também jogo a String dentro de uma variável estática.

CLASSE WindowMenu

public static String login;

public WindowMenu(String login) {
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(475,500);
		setLocationRelativeTo(null);
		controlMenu = new ControlMenu();
		setTitle("Menu Principal");
		criaJPanelNorth();
		setResizable(false);
		criaJpanelCentro();
		setIconImage(Imagem.IconFrame.getImage());
		this.login = login; 
		criaJmenu(login);
		setVisible(true);
	}

Esse é o trecho do código do Logout, onde éstá o comentário escrito "Ação Logout"
é que vai ocorrer a ação do logout…

CLASSE ControlMenu

package control;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

import javax.swing.JOptionPane;

import relatorio.WindowRelatorioCondominio;
import report.PrintReport;

import window.WindowCargo;
import window.WindowCondominio;
import window.WindowCusto;
import window.WindowDespesa;
import window.WindowEmpregado;
import window.WindowEquipamento;
import window.WindowImovel;
import window.WindowInquilino;
import window.WindowItemDespesa;
import window.WindowLogin;
import window.WindowMenu;
import window.WindowReceita;
import window.WindowServico;
import window.WindowTipoCusto;
import window.WindowTipoDespesa;
import window.WindowTipoImovel;

public class ControlMenu implements ActionListener {

	private String mensagem, msg;
	private PrintReport printReport;
	private WindowMenu windowMenu;
	private int sn;
	private HashMap parametros;

	@Override
	public void actionPerformed(ActionEvent e) {
		Component component = (Component) e.getSource();
		if (component.getName().equals("jmiCondominio")
				|| component.getName().equals("btnCondominio")) {
			WindowCondominio windowCondominio = new WindowCondominio();
		}
		if (component.getName().equals("jmiTipoImovel")
				|| component.getName().equals("btnTipoImovel")) {
			WindowTipoImovel windowTipoImovel = new WindowTipoImovel();
		}
		if (component.getName().equals("jmiCusto")
				|| component.getName().equals("btnCusto")) {
			WindowCusto windowCusto = new WindowCusto();
		}
		if (component.getName().equals("jmiDespesa")) {
			WindowDespesa windowDespesa = new WindowDespesa();
		}
		if (component.getName().equals("jmiEmpregado")
				|| component.getName().equals("btnEmpregado")) {
			WindowEmpregado windowEmpregado = new WindowEmpregado();
		}
		if (component.getName().equals("jmiEquipamento")
				|| component.getName().equals("btnEquipamento")) {
			WindowEquipamento windowEquipamento = new WindowEquipamento();
		}
		if (component.getName().equals("jmiImovel")
				|| component.getName().equals("btnImovel")) {
			WindowImovel windowImovel = new WindowImovel();
		}
		if (component.getName().equals("jmiInquilino")) {
			WindowInquilino windowInquilino = new WindowInquilino();
		}
		if (component.getName().equals("jmiItemDespesa")) {
			WindowItemDespesa windowItemDespesa = new WindowItemDespesa();
		}
		if (component.getName().equals("jmiServico")
				|| component.getName().equals("btnServico")) {
			WindowServico windowServico = new WindowServico();
		}
		if (component.getName().equals("jmiSair")) {
			System.exit(0);
		}
		if (component.getName().equals("jmiReceita")
				|| component.getName().equals("btnReceita")) {
			WindowReceita windowReceita = new WindowReceita();
		}
		if (component.getName().equals("jmiTipoDespesa")) {
			WindowTipoDespesa windowTDespesa = new WindowTipoDespesa();
		}
		if (component.getName().equals("jmiCargo")
				|| component.getName().equals("btnCargo")) {
			WindowCargo windowCargo = new WindowCargo();
		}
		if (component.getName().equals("jmiTipoCusto")
				|| component.getName().equals("btnTipoCusto")) {
			WindowTipoCusto windowTipoCusto = new WindowTipoCusto();
		}
		if(component.getName().equals("jmiRelatorioCondominio")) {
			WindowRelatorioCondominio windowRelatorioCondominio = new WindowRelatorioCondominio();
		}
		if(component.getName().equals("jmiLogout")) {
			mensagem = String.format("Deseja Efetuar o Logoff ? %s", windowMenu.login);
			sn = JOptionPane.showConfirmDialog(windowMenu, mensagem, "Logoff", JOptionPane.YES_NO_OPTION);
			if(sn==0){
				WindowLogin windowLogin = new WindowLogin();
				//Ação do Logout
			}
		}
		if(component.getName().equals("jmiRelatorioCusto")) {
			
		}
		if(component.getName().equals("jmiRelatorioEmpregado")) {
			
		}
		if(component.getName().equals("jmiRelatorioEquipamento")) {
			
		}
		if(component.getName().equals("jmiRelatorioImovel")) {
			
		}
		if(component.getName().equals("jmiRelatorioReceita")) {
			
		}
		if(component.getName().equals("jmiRelatorioServico")) {
			
		}
	}
}

Bem eu instancio a classe “WindowLogin” onde é a tela inicial do sistema para fazer o login
mas a ação do Logoff é na WindowMenu.
Eu já tentei de algumas formas como…

windowMenu.dispose();

mas da erro NullPointerException pois eu não instancio a WindowMenu na Classe ControlMenu
a classe ControlMenu é responsável por chamar as outras janelas WindowReceita, WindowCusto… e por aí vai
qlqr ajuda é bem vinda :slight_smile:

Bom dia,

Talvez ajude: http://www.guj.com.br/posts/list/215775.java