Para evitar que o usuário fique fechando o aplicativo durante operações das classes subalternas ao menu principal, eu coloquei a seguinte linha no meu programa de menu principal (GuiMenuPrincipal.java):
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Agora eu quero restaurar o fechamento através do X da janela JFrame, pois neste momento o usuário já se comportou bem e saiu da forma correta da classe de cadastro, por exemplo. Desta forma tentei colocar um leitor de evento window, mas foi um chute e não usei a sintaxe correta, vejam como fiz:
JFrame.addWindowListener(new WindowListener() {
public void windowClosing() {
System.out.println("Funcionou, estou saindo e fechando...");
BD.getInstance().close();
System.exit(0);
}
});
Isto não funciona e gera um mundo de erros. Quem puder me ajudar nesta tarefa, por favor mande uma mensagem. Para melhor compreensão do problema, vou anexar o código do meu programa de menu principal (GuiMenuPrincipal.java), abaixo da assinatura do email.
Staroski, dá uma mão aqui!!!
Atenciosamente,
Ronaldo
package empresaiv;
import br.com.gui.GuiCadastroCategorias;
import br.com.gui.GuiCadastroClientes;
import br.com.gui.GuiCadastroEndEntCli;
import br.com.gui.GuiCadastroFornecedores;
import br.com.gui.GuiCadastroProdutos;
import br.com.gui.GuiCadastroUnidades;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author Ronaldo R. Godoi
*/
public class GuiMenuPrincipal extends JFrame {
private Container contentPane;
private JMenuBar mnBarra;
public static JMenu mnArquivos, mnPedidos, mnConsultas, mnRelatorios;
private JMenuItem miSair, miClientes, miFornecedores, miProdutos,
miCategorias, miEndEntregaCliente, miEndEntregaFornecedor,
miForProduto, miUnidades;
private JMenuItem miPedidoCliente, miPedidoFornecedor;
private JMenuItem miRelatorioClientes, miRelatorioFornecedores,
miRelatorioProdutos, miRelatorioCategorias;
private JMenuItem miConsultaClientes, miConsultaFornecedor, miConsultaProdutos,
miConsultaCategorias, miConsultaEndEntregaCli, miConsultaEndEntregaFor;
public GuiMenuPrincipal() {
inicializarComponentes();
definirEventos();
}
public void inicializarComponentes () {
setTitle("Aplicativo Empresa");
setBounds(0, 0, 1000, 800);
contentPane = getContentPane();
mnBarra = new JMenuBar();
mnArquivos = new JMenu("Arquivos");
mnArquivos.setMnemonic('A');
mnPedidos = new JMenu("Pedidos");
mnPedidos.setMnemonic('P');
mnConsultas = new JMenu("Consultas");
mnConsultas.setMnemonic('C');
mnRelatorios = new JMenu("Relatórios");
mnRelatorios.setMnemonic('R');
// Arquivos ou Cadastros
miClientes = new JMenuItem("Cadastro de Clientes");
miFornecedores = new JMenuItem("Cadastro de Fornecedores");
miProdutos = new JMenuItem("Cadastro de Produtos");
miCategorias = new JMenuItem("Cadastro de Categoria de Produto");
miEndEntregaCliente = new JMenuItem("Cadastro de Endereço de Entrega de Cliente");
miEndEntregaFornecedor = new JMenuItem("Cadastro onde o Fornecedor deve entregar");
miForProduto = new JMenuItem("Cadastro de Fornecedor de Produtos");
miUnidades = new JMenuItem("Cadastro de Unidades de Venda e Compra");
miSair = new JMenuItem("Sair", new ImageIcon("c:/icones/sair2.jpg"));
miSair.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.ALT_MASK));
// Pedidos
miPedidoCliente = new JMenuItem("Pedidos de Clientes");
miPedidoFornecedor = new JMenuItem("Pedidos para Fornecedor");
// Consultas
miConsultaClientes = new JMenuItem("Consulta Clientes");
miConsultaFornecedor = new JMenuItem("Consulta Fornecedor");
miConsultaProdutos = new JMenuItem("Consulta Produtos");
miConsultaCategorias = new JMenuItem("Consulta Categorias");
miConsultaEndEntregaCli = new JMenuItem("Consulta Endereço de Entrega de Cliente");
miConsultaEndEntregaFor = new JMenuItem("Consulta Endereço de Entrega de Fornecedor");
// Relatórios
miRelatorioClientes = new JMenuItem("Relatório de Clientes");
miRelatorioFornecedores = new JMenuItem("Relatório de Fornecedores");
miRelatorioProdutos = new JMenuItem("Relatório de Produtos");
miRelatorioCategorias = new JMenuItem("Relatório de Categorias");
//Menu Cadastros
mnArquivos.add(miClientes);
mnArquivos.add(miFornecedores);
mnArquivos.add(miProdutos);
mnArquivos.add(miCategorias);
mnArquivos.add(miEndEntregaCliente);
mnArquivos.add(miEndEntregaFornecedor);
mnArquivos.add(miForProduto);
mnArquivos.add(miUnidades);
mnArquivos.add(miSair);
//Menu Pedidos
mnPedidos.add(miPedidoCliente);
mnPedidos.add(miPedidoFornecedor);
//Menu Consultas
mnConsultas.add(miConsultaClientes);
mnConsultas.add(miConsultaFornecedor);
mnConsultas.add(miConsultaProdutos);
mnConsultas.add(miConsultaCategorias);
mnConsultas.add(miConsultaEndEntregaCli);
mnConsultas.add(miConsultaEndEntregaFor);
//Menu Relatórios
mnRelatorios.add(miRelatorioClientes);
mnRelatorios.add(miRelatorioFornecedores);
mnRelatorios.add(miRelatorioProdutos);
mnRelatorios.add(miRelatorioCategorias);
mnBarra.add(mnArquivos);
mnBarra.add(mnPedidos);
mnBarra.add(mnConsultas);
mnBarra.add(mnRelatorios);
setJMenuBar(mnBarra);
liberaMenu();
}
private void definirEventos() {
//JFrame.addWindowListener(new WindowListener() {
// public void windowClosing() {
// System.out.println("Funcionou, estou saindo e fechando...");
// BD.getInstance().close();
// System.exit(0);
// }
//});
miSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
BD.getInstance().close();
System.exit(0);
}
});
miClientes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bloqueiaMenu();
GuiCadastroClientes label = new GuiCadastroClientes();
contentPane.removeAll();
contentPane.add(label);
contentPane.validate();
}
});
miFornecedores.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bloqueiaMenu();
GuiCadastroFornecedores label = new GuiCadastroFornecedores();
contentPane.removeAll();
contentPane.add(label);
contentPane.validate();
}
});
miProdutos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bloqueiaMenu();
GuiCadastroProdutos label = new GuiCadastroProdutos();
contentPane.removeAll();
contentPane.add(label);
contentPane.validate();
}
});
miCategorias.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bloqueiaMenu();
GuiCadastroCategorias label = new GuiCadastroCategorias();
contentPane.removeAll();
contentPane.add(label);
contentPane.validate();
}
});
miEndEntregaCliente.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bloqueiaMenu();
GuiCadastroEndEntCli label = new GuiCadastroEndEntCli();
contentPane.removeAll();
contentPane.add(label);
contentPane.validate();
}
});
miUnidades.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bloqueiaMenu();
GuiCadastroUnidades label = new GuiCadastroUnidades();
contentPane.removeAll();
contentPane.add(label);
contentPane.validate();
}
});
}
public void bloqueiaMenu() {
mnArquivos.setEnabled(false);
mnPedidos.setEnabled(false);
mnConsultas.setEnabled(false);
mnRelatorios.setEnabled(false);
}
public static void liberaMenu() {
mnArquivos.setEnabled(true);
mnPedidos.setEnabled(true);
mnConsultas.setEnabled(true);
mnRelatorios.setEnabled(true);
}
public static void abrir() {
GuiMenuPrincipal frame = new GuiMenuPrincipal();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((tela.width - frame.getSize().width) / 2,
(tela.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
}