Janelas

Olá tenho um frame que quando salvo as informações ele deveria ser fechado, mas quando eu salvo algum dado a tela fecha mas abre outra. Já me disseram que deve sr um looping mas não consigo encontrar. Quem poder me ajudar, agradeço.

A CLASSE É ESSA AQUI!

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package Janelas;

import Metodos.Cadastro_Usuario_mtd;
import Metodos_DAO.Cadastro_Usuario_DAO;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
*

  • @author Daniele
    */
    public class Cadastro_Usuario extends JFrame{

    static boolean cont_usuario = false;
    //instanciando os JLabel’s
    private JLabel nome = new JLabel(“NOME:”);
    private JLabel cargo = new JLabel(“CARGO:”);
    private JLabel login = new JLabel(“LOGIN:”);
    private JLabel senha = new JLabel(“SENHA:”);
    private JLabel labelIMG = new JLabel();
    //instanciando as caixas de texto
    private JTextField caixaNome = new JTextField();
    private JTextField caixaCargo = new JTextField();
    private JTextField caixaLogin = new JTextField();
    private JPasswordField caixaSenha = new JPasswordField();
    //instanciando as imagens para os botões
    ImageIcon imgSalvar = new ImageIcon(“src/imagens/salvar.jpg”);
    ImageIcon imgLimpar = new ImageIcon(“src/imagens/limpar.jpg”);
    ImageIcon imgSair = new ImageIcon(“src/imagens/sair,.jpg”);
    //ImageIcon img = new ImageIcon(“src/imagens/HORIZONTEd.jpg”);
    //instanciando os botões
    private JButton btSalvar = new JButton(imgSalvar);//adicionando imagem ao JButton
    private JButton btLimpar = new JButton(imgLimpar);//adicionando imagem ao JButton
    private JButton btSair = new JButton(imgSair);//adicionando imagem ao JButton
    private JCheckBox privilegio = new JCheckBox(“Todos os privilegios?”);

    //metodo construtor
    public Cadastro_Usuario() {
    super(“IF/Cadastro Usuário”);
    //posicionando e definindo tamanho da tela.
    this.setVisible(true);
    this.setBounds(0, 0, 419, 210);
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    this.setLayout(null);
    this.setLocationRelativeTo(null);
    this.setResizable(false);

     //coloca uma figura na barra de título da janela  
     URL url = this.getClass().getResource("/imagens/icone_lôgo.png");  
     Image imagemTitulo = Toolkit.getDefaultToolkit().getImage(url);  
     this.setIconImage(imagemTitulo);
    
     nome.setBounds(20, 20, 70, 20);
     this.add(nome);//adicionando o JLabel a tela.
    
     privilegio.setBounds(240, 120, 200, 20);        
     this.add(privilegio);
    
     cargo.setBounds(20, 50, 90, 20);
     this.add(cargo);//adicionando o JLabel a tela.
    
     login.setBounds(20, 80, 90, 20);
     this.add(login);//adicionando o JLabel a tela.
    
     senha.setBounds(20, 110, 110, 20);
     this.add(senha);//adicionando o JLabel a tela.
    
     //posicionando os JTextField's
     caixaNome.setBounds(70, 20, 150, 20);
     this.add(caixaNome);//adicionando o JTextField a tela.
    
     caixaCargo.setBounds(70, 50, 120, 20);
     this.add(caixaCargo);//adicionando o JTextField a tela.
    
     caixaLogin.setBounds(70, 80, 130, 20);
     caixaLogin.setToolTipText("certifique-se que a tecla CAPS LOCK está desativada");
     this.add(caixaLogin);
    
     caixaSenha.setBounds(70, 110, 90, 20);
     caixaSenha.setToolTipText("certifique-se que a tecla CAPS LOCK está desativada");
     this.add(caixaSenha);//adicionando o JTextField a tela.
    
     //dimencinando e posicionando os JButton's
     btSalvar.setBounds(290, 2, 40, 35);
     btSalvar.setToolTipText("Salvar");
     this.add(btSalvar);//adicionando o JButton a tela.
     
     btLimpar.setBounds(330, 2, 40, 35);
     btLimpar.setToolTipText("Limpar");
     
     
     btSalvar.addActionListener(new ActionListener() {//adicionando ação ao botão
    
         @Override
         //metodo que vai salvar os dados no banco
         public void actionPerformed(ActionEvent e) {
             String nome = caixaNome.getText();
             String cargo = caixaCargo.getText();
             String nome_login = caixaLogin.getText();
             String senha_user = caixaSenha.getText();
    
             // pronto para gravar
             Cadastro_Usuario_mtd cadastro_usuario = new Cadastro_Usuario_mtd();
             cadastro_usuario.setNome(nome);
             cadastro_usuario.setCargo(cargo);
             cadastro_usuario.setLogin(nome_login);
             cadastro_usuario.setSenha(senha_user);
             cadastro_usuario.setPrivilegio(privilegio.isSelected());
    
             // gravando nessa conexão!!!
             Cadastro_Usuario_DAO dao_usuario = new Cadastro_Usuario_DAO();
    
             // método elegante
             dao_usuario.adiciona(cadastro_usuario);
             fechar();
             System.out.println("Gravado!");
    
             
         }
     });
     
    
     
     btLimpar.addActionListener(new ActionListener() {//adicionando ação ao botão
         //metodo que vai limpar os campos da tela
    
         public void actionPerformed(ActionEvent e) {
             caixaNome.setText("");
             caixaCargo.setText("");
             caixaLogin.setText("");
             caixaSenha.setText("");
             privilegio.setSelected(false);
         }
     });
     this.add(btLimpar);//adicionando o JButton a tela.
    
     btSair.setBounds(370, 2, 40, 35);
     btSair.setToolTipText("Sair");
     btSair.addActionListener(new ActionListener() {//adicionando ação ao botão
         //metodo que fecha a tela atual
    
         public void actionPerformed(ActionEvent e) {
             fechar();
         }
     });
     this.add(btSair);//adicionando o JButton a tela.
    
    
     // labelIMG.setBorder(BorderFactory.createLineBorder(Color.BLACK));
     /*labelIMG.setBounds(-2, 180, 420, 135);
     labelIMG.setIcon(img);
     tela6.add(labelIMG);*/
    

    }
    public void fechar(){
    this.dispose();
    }

    /* public static void main(String[] args) {
    new Cadastro_Usuario();
    }*/
    }[/code]

Nossa mãe do céu todo poderoso. Primeira coisa não sei se ja vai corrigir o seu erro, mas por favor retire essa quantidade absurda de coisas que está dentro do seu construtor, ele é apenas responsável por inicializar algumas coisas e não ter métodos dentro dele, pois toda vez que você chama essa classe ele invoca seu construtor logo executa tudo que está dentro dele, possivelmente segmentado mais sua classe ja corrija o seu problema , senão corrigir pelo menos fica mais fácil de descobrir aonde está ocorrendo o erro. Me desculpe mas você colocou toda a execução da sua classe dentro do construtor e isto não é o correto. Além disso aqueles componentes que você seta tamanho etc, voce pode criar um método chamado criaComponentes etc e chama eles lá dentro, e no seu construtor você só chama esse método é uma técnica para deixar o código mais limpo, além desse exemplo faça a mesma coisa para outros componentes, se você ve algo em comum entre eles coloque dentro de um método que faça isso e chame o método aonde você precisa . Att

e pra fechar adicione isso

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);   

ele fecha a janela ao clicar no X.

[quote=Fellipex]e pra fechar adicione isso

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);   

ele fecha a janela ao clicar no X.[/quote]

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

Ao invés de criar um método e inserir “this.dispose” nele, poderia excluir o método e adicionar “System.exit(0)” na linha onde chama o método, não?

A propósito… Que IDE tá usando?

[quote=War Paz][quote=Fellipex]e pra fechar adicione isso

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);   

ele fecha a janela ao clicar no X.[/quote]

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

Ao invés de criar um método e inserir “this.dispose” nele, poderia excluir o método e adicionar “System.exit(0)” na linha onde chama o método, não?

A propósito… Que IDE tá usando?[/quote]

vc está equivocado no que falou na questão do exit(0), esse método só é usado para fechar a aplicação como um todo, no caso, pelo que eu entendi, o intuito é fechar apenas o frame que tem as informações após terem sidos salvas, caso seja para fechar o programa como um todo, ai sim usa o exit(0), senão é o dispose mesmo.

Onde essa classe é chamada?