Pessoal, sou iniciante em Java e no Guj e estou tentando fazer um sistema de agenda de contatos bem básica ir treinando … mas estou algumas dificuldades e gostaria da ajuda de vocês.
Bom, a conexão com o banco de dados JDBC (MySql) já está ok, o metodo adiciona() da DAO está funcionando certinho. Então implementei a classe TelaContato() com a parte gráfica, mas como faço para fazer a parte gráfica “conversar” com o banco??? Como faço para pegar o conteudo digitado nas JTextFields para jogar no banco?
Tentei fazer com uma ActionListener no botãoOk e usar o método getText() da JTextField, mas está dando vários erros quando clico no Ok da janela.
Segue abaixo minhas classes Contato, ContatoDAO e a Conexão com o Banco:
public class Contato {
Long id;
private String nome;
private String telefone;
private String email;
private String endereco;
//getters e setters
public class ContatoDAO {
private Connection connection;
public ContatoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(Contato contato) {
String sql = "insert into contatos (nome, telefone, email, endereco) values (?,?,?,?)";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getTelefone());
stmt.setString(3, contato.getEmail());
stmt.setString(4, contato.getEndereco());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
public class ConnectionFactory {
public Connection getConnection() {
System.out.println("Conectando ao banco...");
try {
return DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root", "1234");
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
}
Deixei comentado no codigo a parte que estou com dificuldades… isso que fiz está certo? É essa a idéia?
public class TelaContato {
public static void main(String[] args) {
new TelaContato().montaTela();
}
private JFrame janela;
private JPanel painelPrincipal;
private JPanel painelBotoes;
private JPanel painelCampos;
private JTextField campoNome;
private JTextField campoTelefone;
private JTextField campoEmail;
private JTextField campoEndereco;
private void montaTela() {
// TODO Auto-generated method stub
montaJanela();
montaPainelPrincipal();
montaPainelCampos();
montaPainelBotoes();
montaComponentesPainel();
montaBotaoSair();
montaBotaoOK();
mostraJanela();
}
private void montaJanela() {
janela = new JFrame("Agenda");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void montaPainelPrincipal() {
painelPrincipal = new JPanel();
janela.add(painelPrincipal);
painelPrincipal.setLayout(new BorderLayout());
}
private void montaPainelCampos() {
painelCampos = new JPanel();
painelPrincipal.add(painelCampos, BorderLayout.CENTER);
}
private void montaPainelBotoes() {
painelBotoes = new JPanel(new GridLayout());
painelPrincipal.add(painelBotoes, BorderLayout.SOUTH);
}
private void montaComponentesPainel() {
JLabel labelNome = new JLabel("Nome");
JTextField campoNome = new JTextField(20);
painelCampos.add(labelNome);
painelCampos.add(campoNome);
JLabel labelTelefone = new JLabel("Telefone");
JTextField campoTelefone = new JTextField(20);
painelCampos.add(labelTelefone);
painelCampos.add(campoTelefone);
JLabel labelEmail = new JLabel("e-mail");
JTextField campoEmail = new JTextField(20);
painelCampos.add(labelEmail);
painelCampos.add(campoEmail);
JLabel labelEndereco = new JLabel("Endereço");
JTextField campoEndereco = new JTextField(20);
painelCampos.add(labelEndereco);
painelCampos.add(campoEndereco);
}
private void montaBotaoOK() {
JButton botaoOK = new JButton("OK");
botaoOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/*
Contato contato = new Contato();
contato.setNome(campoNome.getText());
contato.setEmail(campoEmail.getText());
contato.setTelefone(campoTelefone.getText());
contato.setEndereco(campoEndereco.getText());
ContatoDAO contatoDAO = new ContatoDAO();
contatoDAO.adiciona(contato);
*/
}
});
painelBotoes.add(botaoOK);
}
private void montaBotaoSair() {
JButton botaoSair = new JButton("Sair");
botaoSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
painelBotoes.add(botaoSair);
}
private void mostraJanela() {
janela.pack();
janela.setSize(280, 380);
janela.setVisible(true);
}
}
Obrigado