JDIALOG没有看到其他类

时间:2016-11-25 02:51:55

标签: java swing jframe crud jdialog

我目前正在尝试使用Java编写一个简单的CRUD。我已经创建了一个单独的类来连接到mySQL数据库。然后我创建了一个JFrame,我使用extends将该类绑定到我的JFrame。我还创建了一个名为“FormCadastro”的JDialog,当用户在JMenu中选择某个功能时会打开,此时一切正常,JDialog显示在JFrame但问题是JDialog类没有看到我的“ConnectDataBase”类,当用户点击“注册”将数据从JDialog TextFields发送到我的数据库时,我需要访问它。

JDialog Class

JButton OkBtn = new JButton("Cadastrar");

OkBtn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        String query = "INSERT INTO dados_pessoais(Codigo, Nome, SobreNome, Endereco, Numero, Bairro, Cidade, UF, Email, Celular, Telefone) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement stmt = con.prepareStatement(query);
        //JDialog does not see "con" variable and PreparedStatement class even if i import it using import Classes.ConnectDataBase,
    }
}    

如果我使用extends ConnectDataBase代替JDialog

public class FormCadastro extends JDialog

我收到很多错误,所以我不知道如何访问DataBase 我的JDialog中的类。

ConnectDataBase Class

public class ConnectDataBase 
{
    private Connection con = null;
    private ResultSet rs = null;

    public void ConnectDataBase() throws ClassNotFoundException
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            this.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/usuarios", "root", "admin");
            JOptionPane.showMessageDialog(null, "Conexão com o Banco de Dados bem sucedida");
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, "Erro ao tentar conectar ao Banco de Dados", "Erro de Conexão", JOptionPane.ERROR_MESSAGE);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果您希望JDialog扩展类使用ConnectDataBase的功能,那么您必须将可行的ConnectDataBase传递到JDialog类,可能在其构造函数中或通过setter方法。使用导入并不会神奇地赋予能力。您需要使用组合

如,

public class FormCadastro extends JDialog {
    private ConnectDataBase connectDataBase;

    public FormCadastro(ConnectDataBase connectDataBase) {
        this.connectDataBase = connectDataBase;

        JButton OkBtn = new JButton("Cadastrar");
        OkBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String query = "INSERT INTO dados_pessoais (Codigo,Nome,SobreNome,Endereco,Numero,Bairro,Cidade,UF,Email,Celular,Telefone) VALUES ( ?,?,?,?,?,?,?,?,?,?,?)";

                // use public methods of your connectDataBase object here
            }
        });
    }
}