Versão atual:

Problema em um metodo dentro de um ActionListener.

Ola, estou com um problema que literalmente não sei o porque esta acontecendo. Tenho um Método BuscarDados() que faz a busca de dados dentro do meu Banco de Dados MySQL pelo Java. Ao chamar o método clicando no Botão de Busca na minha interface ele da um erro que também não sei qual é. Debuggando ele diz apenas Search not Found. A coisa engraçada é que quando eu jogo o corpo do método dentro do actionListener do JButton ele faz a pesquisa normalmente e sem erros. Bom como gosto, tento, de deixar meu código bem estruturado, não queria um método gigantesco dentro de um actionlistener. Bom vocês conseguem me ajudar?

Vou mandar o código pra vocês aqui de uma parte do frame:

package Interface_banco;


import java.awt.Button;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;





public class NovaJanela extends JFrame {

    private JPanel contentPane2;
    public JTextField myInfo3; // campos de entrada de texto
    private JLabel lblInforme3;// campos de informacao
    private JButton continuarNovaJanela;// botoes usados
    private int i = 0;// contador usado para o ID usuario
    public JTextArea t_area1; // text area para a busca;


    /**
     * INICIA A APLICACAO
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    NovaJanela novaj = new NovaJanela();
                    novaj.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * CRIA O FRAME
     */
    public NovaJanela() {


        //configuracao da tela
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(400, 200, 530, 300);
        setTitle("Usuario");
        contentPane2 = new JPanel();
        contentPane2.setBackground(Color.DARK_GRAY);
        contentPane2.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane2);
        contentPane2.setLayout(null);

        /* Informativo `Nome` na tela*/
        JLabel lblInforme3 = new JLabel("Nome:");
        lblInforme3.setForeground(Color.WHITE);
        lblInforme3.setFont(new Font("TimesRoman", Font.BOLD, 20));
        lblInforme3.setBounds(20, 11, 300, 31);
        contentPane2.add(lblInforme3);

        //TENTAR FAZER TEXT AREA
        JTextArea t_area1 = new JTextArea();
        t_area1.setBackground(Color.gray);
        t_area1.setBounds(20, 50, 50, 50);
        t_area1.setSize(470, 140);    
        t_area1.setEditable(false);
        contentPane2.add(t_area1);

        /* Campo: Nome*/
        myInfo3 = new JTextField();
        myInfo3.setBounds(91, 16, 400, 22);
        contentPane2.add(myInfo3);
        myInfo3.setColumns(10);

        /* Botao 1 na tela*/
        Button buscarButton2 = new Button("Buscar");
        buscarButton2.setBackground(Color.WHITE);
        buscarButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if(myInfo3.getText().equals("")){

                    limparCampos();
                    JOptionPane.showMessageDialog(null, "Campo 'Nome' e/ou 'Cargo' precisa ser preenchido!");
                }else{
                    t_area1.setBackground(Color.WHITE);
                    BuscarDados();

                }
            }
        });
        buscarButton2.setBounds(167, 200, 67, 22);
        buscarButton2.setSize(210, 50);  
        contentPane2.add(buscarButton2);


        // NOVO BOTAO PARA CRIAR UMA NOVA JANELA
        Button continuarNovaJanela = new Button("Voltar");
        continuarNovaJanela.setBackground(Color.white);
        continuarNovaJanela.addActionListener(new ActionListener() {

         public void actionPerformed(ActionEvent arg0) {

        // comando para fechar o JFrame atual.
            dispose();
        // Comando para chamar o próximo JFrame.
            Menu jmenu = new Menu();
            jmenu.setVisible(true);

         }
        });
        continuarNovaJanela.setBounds(387, 220, 67, 22);
        continuarNovaJanela.setSize(100, 30);
        contentPane2.add(continuarNovaJanela);



    }

    public void BuscarDados() {


        try {
        // * Drive Conector MySQL.
            Class.forName("com.mysql.jdbc.Driver");

        // * Conexão como BD.
        Connection con = DriverManager.getConnection(
        "jdbc:mysql://localhost/bancousuario", "root", "63419100");



        // * Objeto comdo SQL.
        String cadNome2 = myInfo3.getText();

        String sql3 = "SELECT * FROM usuario where Nome = '"+cadNome2+"';";  

        Statement stmt = (Statement) con.createStatement();


        ResultSet rs_nv = (ResultSet) stmt.executeQuery(sql3);

        while(rs_nv.next()) {



            String Nome = rs_nv.getString("Nome"); 
            String Cargo = rs_nv.getString("Cargo_que_ocupa");
                                                                                // NAO TA FUNCIONANDO AQUI, OU O SELECT OU O PRINT!!
                                                                                // NAO TA FUNCIONANDO AQUI!!!!!!!!!!!!!!
            t_area1.append("Nome: "+Nome+"Cargo: "+Cargo+"\n");


        }



        JOptionPane.showMessageDialog(null, "Pesquisa realizada com Sucesso!");




         // limpa os campos ates do prox cadastro
        limparCampos();

        // * Fecha a conexão do o DB.
        con.close();

        } catch (SQLException Erro) {
        JOptionPane.showMessageDialog(null,
        "Erro Cmdo SQL - " + Erro.getMessage());

        // Trata erros de conexão.
        } catch (ClassNotFoundException Erro) {

        JOptionPane.showMessageDialog(null, "Driver não encontrado!");

        }
    }

    //Ao clicar em "limpar" o botao ira zerar os campos preenchidos com esse metodo
    public void limparCampos() {
        myInfo3.setText(null);


    }
}

Obs: se você tirar BuscarDados() de dentro do Action e colocar o corpo todo do método lá, vai rodar o código de boa.

Obs2: deve ter uns lixos ai no código viu.

Versão(1):

Ver a versão formatada

Problema em um metodo dentro de um ActionListener.

Comentário

new question