Dúvida para fechar JFrame

4 respostas
R

Bom galera, estou estudando JAVA, sou programador PHP e estou curtindo a linguagem e lógico, junto com os estudos chegam diversas dúvidas.

Bom, o fato é o seguinte, tenho uma classe simples que abre um Frame com um painel contendo apenas um campo JTextField e um botão localizar, está tudo funcionando perfeitamente, consulta, tudo direitinho, mas não estou conseguindo fechar esse Frame quando clico em localizar, segue abaixo o meu código:
public class BuscaCliente extends javax.swing.JPanel {
    Conexao conn = new Conexao();
    JFrame f = new JFrame();
    
    /** Creates new form BuscaCliente */
    public static String id;
    public BuscaCliente(){
       initComponents();
    }
    public void criaTela () {
       
       f.add(new BuscaCliente());
       f.setVisible(true);
       f.setSize(150,120 );
       f.setResizable(false);
       f.setTitle("Busca Cliente");
    }

    public void fechaTela () {
       f.dispose();
    }
                     
    private void initComponents() {
    ***criação da tela pelo NetBeans***
    }
    
    private void btLocalizarClick(java.awt.event.MouseEvent evt) {                                  
        try {            

            id = idCliente.getText();
            
            //String id = JOptionPane.showInputDialog("Digite ID do cliente:");
            String SQL = "SELECT id, nome,idade,telefone,endereco FROM alunos WHERE id='" +
                          id + "'";
            Statement stm = conn.conectar().createStatement();

            ResultSet rs = stm.executeQuery(SQL);

            while (rs.next()) {
              FramePrincipal.setNome(rs.getString("nome"));
              FramePrincipal.setIdade(rs.getString("idade"));
              FramePrincipal.setEnd(rs.getString("endereco"));
              FramePrincipal.setTel(rs.getString("telefone"));
              FramePrincipal.setId(rs.getString("id"));
            }
            if (!rs.first()){
                JOptionPane.showMessageDialog(null, "Cliente Inexistente");
            }
            
            fechaTela(); //<------------- Aqui eu chamo a função para fechar o meu frame.

        }catch(SQLException e) {
            e.printStackTrace();

        }
    }                                 

                 
    private javax.swing.JButton btLocalizar;
    private javax.swing.JTextField idCliente;
    private javax.swing.JLabel jLabel1;
                

}

Está tudo funcionando normalmente, mas ele não fecha minha janelinha de busca após a consulta e também não é apresentado nenhuma erro.. Será que alguém poderia me dar uma luz?

4 Respostas

Lindberg

nao seria …

public class Menu1 extends javax.swing.JFrame {

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    meupanel = new javax.swing.JPanel();


dispose();

ve se ajuda, não sei se é isso que vc precisa …
normalmente temos um jframe, e ne adicionamos os panel

Vanilson

Tente fazer o seguinte, no teu metodo fechartela coloque f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

R

Bom pessoal, agradeço a ajuda mas consegui resolver e irei colocar aqui para que alguém que tenha mesma dúvida consiga também.

Quando eu estava criando o meu Frame j = new JFrame, eu não estava criando ele como estático, assim, cada instancia era um novo objeto, logo, a primeira instancia não era a mesma, então fiz o seguinte, criei o objeto f como static e meu método fechaTela funcionou perfeitamente.

Agradeço a ajuda de todos vocês.

public class BuscaCliente extends javax.swing.JPanel {
    Conexao conn = new Conexao();
    static JFrame f = new JFrame(); // <---------------------------- Criei como estático e resolveu meu problema.
    
    public static String id;
    public BuscaCliente(){
       initComponents();
    }
    public void criaTela () {
       
       f.add(new BuscaCliente());
       f.setVisible(true);
       f.setSize(150,120 );
       f.setResizable(false);
       f.setLocation(450, 250);
       f.setTitle("Busca Cliente");
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
       
    }
    public void fechaTela () {
       f.dispose();
    }

                     
    private void initComponents() {
     *** Tela criada pelo netBeans ***
    }             

    private void btLocalizarClick(java.awt.event.MouseEvent evt) {                                  
        try {            

            id = idCliente.getText();
            System.out.println(id);

            //String id = JOptionPane.showInputDialog("Digite ID do cliente:");
            String SQL = "SELECT id, nome,idade,telefone,endereco FROM alunos WHERE nome LIKE '%" +
                          id + "%'";
            Statement stm = conn.conectar().createStatement();

            ResultSet rs = stm.executeQuery(SQL);

            while (rs.next()) {
              FramePrincipal.setNome(rs.getString("nome"));
              FramePrincipal.setIdade(rs.getString("idade"));
              FramePrincipal.setEnd(rs.getString("endereco"));
              FramePrincipal.setTel(rs.getString("telefone"));
              FramePrincipal.setId(rs.getString("id"));
            }
                        
            if (!rs.first()){
                JOptionPane.showMessageDialog(null, "Não existe nenhum cliente com id - " +
                        idCliente.getText());
            }else{
                idCliente.setText("");
                fechaTela();
            }
        }catch(SQLException e) {
            e.printStackTrace();

        }
    }                                 

    // Variables declaration - do not modify                     
    private javax.swing.JButton btLocalizar;
    private javax.swing.JTextField idCliente;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                   

}
Lindberg

Valeu rodriguezpqd

Serve para enriquecer nossos conhecimentos ! :slight_smile:

Criado 3 de junho de 2010
Ultima resposta 8 de jun. de 2010
Respostas 4
Participantes 3