Isso quer dizer criar um novo formulário, seguindo os mesmos passos da série Java Desktop - Cadastro CRUD: criar uma classe no pacote bean; implementar a interface Dao na classe LoginDao, do pacote dao; LoginCT no pacote controle e criar a classe JFrame para o formulário.
Finalmente, para abrir o formulário de Login, acrescentar um botão no JFrame FormCliente.
Classe Bean Login
No pacote bean, precisamos da classe onde estarão os atributos e métodos assessores. Na publicação Java Desktop, Cadastro CRUD 2 - MVC está, passo a passo, a criação dos pacotes e parte das classes.Da mesma forma vista na classe Cliente no pacote bean, crie os atributos privados que corresponde às colunas da tabela Login no banco de dados: id, operador, nome e senha:
1: package br.com.cliente.bean; 2: 3: public class Login { 4: private Integer id; 5: private String operador; 6: private String nome; 7: private String senha; 8: 9: public Integer getId() { 10: return id; 11: } 12: public void setId(Integer id) { 13: this.id = id; 14: } 15: public String getOperador() { 16: return operador; 17: } 18: public void setOperador(String operador) { 19: this.operador = operador; 20: } 21: public String getNome() { 22: return nome; 23: } 24: public void setNome(String nome) { 25: this.nome = nome; 26: } 27: public String getSenha() { 28: return senha; 29: } 30: public void setSenha(String senha) { 31: this.senha = senha; 32: } 33: 34: @Override 35: public String toString() { 36: // TODO Auto-generated method stub 37: return getOperador(); 38: } 39: }
Interface DAO na classe LoginDAO
Abra a classe LoginDao criada na publicação anterior.
Como feito na classe ClienteDao, implemente a interface Dao, como no destaque em vermelho no código abaixo. Veja mais detalhes nesta publicação, onde está o código de ClienteDao com comentários em cada método da interface Dao.
1: package br.com.cliente.dao; 2: 3: import java.sql.PreparedStatement; 4: import java.sql.ResultSet; 5: import java.sql.SQLException; 6: import java.util.ArrayList; 7: import java.util.List; 8: 9: import br.com.cliente.bean.Login; 10: import br.com.cliente.util.Conector; 11: import br.com.cliente.util.Dao; 12: 13: public class LoginDao implements Dao{ 14: 15: public boolean acessoLogin(String nome, String senha ) { 16: 17: String sql = "select * from Login where nome=? and senha=?"; 18: 19: boolean check = false; 20: try { 21: PreparedStatement ps = Conector.getConexao().prepareStatement(sql); 22: ps.setString(1, nome); 23: ps.setString(2, senha); 24: ResultSet rs = ps.executeQuery(); 25: 26: if (rs.next()) { 27: check = true; 28: } 29: } catch (SQLException e) { 30: // TODO Auto-generated catch block 31: e.printStackTrace(); 32: } 33: return check; 34: } 35: 36: @Override 37: public void delete(Object arg0) { 38: Login lg = (Login) arg0; 39: String sql = "delete from Login where id=?"; 40: try { 41: PreparedStatement ps = Conector.getConexao().prepareStatement(sql); 42: ps.setInt(1, lg.getId()); 43: ps.equals(lg); 44: } catch (SQLException e) { 45: // TODO Auto-generated catch block 46: e.printStackTrace(); 47: } 48: 49: } 50: 51: @Override 52: public void insert(Object arg0) { 53: Login lg = (Login) arg0; 54: String sql = "insert into Login (operador,nome,senha) values (?,?,?)"; 55: try { 56: PreparedStatement ps = Conector.getConexao().prepareStatement(sql); 57: ps.setString(1, lg.getOperador()); 58: ps.setString(2, lg.getNome()); 59: ps.setString(3, lg.getSenha()); 60: ps.execute(); 61: } catch (SQLException e) { 62: // TODO Auto-generated catch block 63: e.printStackTrace(); 64: } 65: 66: } 67: 68: @Override 69: public List select() { 70: List<login> list = new ArrayList<login>(); 71: String sql = "select * from Login"; 72: try { 73: PreparedStatement ps = Conector.getConexao().prepareStatement(sql); 74: ResultSet rs = ps.executeQuery(); 75: while(rs.next()){ 76: Login ac = new Login(); 77: ac.setId(rs.getInt("id")); 78: ac.setOperador(rs.getString("operador")); 79: ac.setNome(rs.getString("nome")); 80: ac.setSenha(rs.getString("senha")); 81: list.add(ac); 82: } 83: } catch (SQLException e) { 84: // TODO Auto-generated catch block 85: e.printStackTrace(); 86: } 87: return list; 88: } 89: 90: @Override 91: public Object select(int arg0) { 92: Login lg = new Login(); 93: String sql = "select * from Login where id=?"; 94: try { 95: PreparedStatement ps = Conector.getConexao().prepareStatement(sql); 96: ResultSet rs = ps.executeQuery(); 97: while(rs.next()){ 98: 99: lg.setOperador(rs.getString("operador")); 100: lg.setNome(rs.getString("nome")); 101: lg.setSenha(rs.getString("senha")); 102: 103: 104: } 105: } catch (SQLException e) { 106: // TODO Auto-generated catch block 107: e.printStackTrace(); 108: } 109: return lg; 110: 111: } 112: 113: @Override 114: public void update(Object arg0) { 115: Login lg = (Login) arg0; 116: String sql = "update Acesso set operador=?,nome=?,senha=? where id=?"; 117: try { 118: PreparedStatement ps = Conector.getConexao().prepareStatement(sql); 119: ps.setString(1, lg.getOperador()); 120: ps.setString(2, lg.getNome()); 121: ps.setString(3, lg.getSenha()); 122: ps.setInt(4, lg.getId()); 123: ps.execute(); 124: } catch (SQLException e) { 125: // TODO Auto-generated catch block 126: e.printStackTrace(); 127: } 128: 129: } 130: }
Novamente, esta classe tem o mesmo funcionamento da classe ClienteCT, vista em detalhes na última parte da série Java Desktop, Cadastro CRUD.
Crie agora uma nova classe no pacote controle - LoginCT.
É a classe que "chama" os métodos de LoginDao, atribuindo o resultado destes a um objeto Login (classe do pacote bean, destacada em azul no código abaixo).
1: package br.com.cliente.controle; 2: 3: import java.util.List; 4: 5: import br.com.cliente.bean; 6: import br.com.cliente.dao.LoginDao; 7: 8: public class LoginCT { 9: 10: public void insert(){ 11: LoginDao dao = new LoginDao(); 12: dao.insert(lg); 13: } 14: 15: public void update(Login lg){ 16: LoginDao dao = new LoginDao(); 17: dao.update(lg); 18: } 19: 20: public void delete(Login lg){ 21: LoginDao dao = new LoginDao(); 22: dao.delete(lg); 23: } 24: 25: public Login select(int i){ 26: LoginDao dao = new LoginDao(); 27: Login lg = (Login) dao.select(); 28: return lg; 29: } 30: 31: public List<Login>(){ 32: LoginDao dao = new LoginDao(); 33: List<Login> lg = dao.select(); 34: return lg; 35: } 36: }
Todos os códigos aqui podem ser simplesmente copiados e colados em suas classes respectivas. Porém, recomendo para fins didáticos a digitação linha a linha.
Com mais o código abaixo o formulário estará completo e funcionando, podendo criar novos usuários com nome e senha para acessar o sistema, excluir, alterar ou consultar na pesquisa.
Em Java Desktop, Cadastro CRUD - 5: JFrame, neste link, está detalhado a criação da classe FormCliente. A lógica é a mesma, apenas alterando o nome dos campos e classes.
Criei com o nome LoginNovo, porém pode criar com outro nome se preferir.
Com mais o código abaixo o formulário estará completo e funcionando, podendo criar novos usuários com nome e senha para acessar o sistema, excluir, alterar ou consultar na pesquisa.
Em Java Desktop, Cadastro CRUD - 5: JFrame, neste link, está detalhado a criação da classe FormCliente. A lógica é a mesma, apenas alterando o nome dos campos e classes.
Criei com o nome LoginNovo, porém pode criar com outro nome se preferir.
1: package br.com.cliente.view; 2: 3: import java.awt.Color; 4: import java.awt.Font; 5: import java.awt.SystemColor; 6: import java.awt.event.ActionEvent; 7: import java.awt.event.ActionListener; 8: import java.util.List; 9: 10: import javax.swing.ImageIcon; 11: import javax.swing.JButton; 12: import javax.swing.JComboBox; 13: import javax.swing.JFrame; 14: import javax.swing.JLabel; 15: import javax.swing.JOptionPane; 16: import javax.swing.JPanel; 17: import javax.swing.JPasswordField; 18: import javax.swing.JTextField; 19: import javax.swing.border.EmptyBorder; 20: 21: import br.com.cliente.bean.Login; 22: import br.com.cliente.controle.LoginCT; 23: import br.com.cliente.view.LoginNovo; 24: 25: public class LoginNovoextends JFrame implements ActionListener { 26: 27: private JPanel contentPane; 28: private JTextField txtNome; 29: private JPasswordField txtSenha; 30: private JButton btnSalvar; 31: private JButton btnAlterar; 32: private JButton btnExcluir; 33: private JButton btnSelecionar; 34: 35: private JComboBox cbLogin; 36: private JLabel lblOperador; 37: private JTextField txtOperador; 38: private JButton btnLimpar; 39: private JTextField txtID; 40: private JLabel lblId; 41: 42: public void limpaTela() { 43: this.txtOperador.setText(""); 44: this.txtNome.setText(""); 45: this.txtSenha.setText(""); 46: this.txtID.setText(null); 47: } 48: 49: public void carregaLista() { 50: LoginCT sbc = new LoginCT(); 51: List<login> list = sbc.select(); 52: cbLogin.removeAllItems(); 53: for (Login login : list) { 54: cbLogin.addItem(login); 55: } 56: } 57: 58: public Login montaLogin() { // Pega dos dados digitados nos campos do 59: // formulário e atribui ao objeto 60: Login lg = new Login(); 61: lg.setOperador(this.txtOperador.getText()); 62: lg.setNome(this.txtNome.getText()); 63: 64: lg.setSenha(this.txtSenha.getText()); 65: 66: if (this.txtID.getText() != null && !this.txtID.getText().equals("")) { 67: lg.setId(Integer.parseInt(this.txtID.getText())); 68: } 69: return lg; 70: 71: } 72: 73: public void setAcesso(Login lg) { // Preenche formulário do Usuario 74: // selecionado ao pressionar btnSelect 75: this.txtOperador.setText(lg.getOperador()); 76: this.txtNome.setText(lg.getNome()); 77: this.txtSenha.setText(lg.getSenha()); 78: 79: if (lg.getId() != null && lg.getId() > 0) { 80: this.txtID.setText(lg.getId().toString()); 81: } 82: } 83: 84: public LoginNovo() { 85: setTitle("Cadastro de Clientes - Acesso"); 86: setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 87: setBounds(100, 100, 450, 300); 88: contentPane = new JPanel(); 89: contentPane.setBackground(Color.LIGHT_GRAY); 90: contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 91: setContentPane(contentPane); 92: contentPane.setLayout(null); 93: 94: JLabel lblNome = new JLabel("Nome:"); 95: lblNome.setFont(new Font("Arial Black", Font.BOLD, 12)); 96: lblNome.setForeground(SystemColor.desktop); 97: lblNome.setBounds(95, 127, 70, 15); 98: contentPane.add(lblNome); 99: 100: txtNome = new JTextField(); 101: txtNome.setBounds(183, 125, 146, 19); 102: contentPane.add(txtNome); 103: txtNome.setColumns(10); 104: 105: JLabel lblSenha = new JLabel("Senha:"); 106: lblSenha.setFont(new Font("Arial Black", Font.PLAIN, 12)); 107: lblSenha.setForeground(new Color(165, 42, 42)); 108: lblSenha.setBounds(95, 153, 70, 15); 109: contentPane.add(lblSenha); 110: 111: txtSenha = new JPasswordField(); 112: txtSenha.setBounds(183, 151, 146, 19); 113: contentPane.add(txtSenha); 114: txtSenha.setColumns(10); 115: 116: btnSalvar = new JButton(""); 117: btnSalvar.setIcon(new ImageIcon(LoginNovo.class.getResource("/img/save.png"))); 118: btnSalvar.setFont(new Font("Ubuntu", Font.BOLD, 14)); 119: btnSalvar.setForeground(new Color(0, 100, 0)); 120: btnSalvar.setBounds(95, 179, 32, 25); 121: btnSalvar.addActionListener(this); 122: btnSalvar.setActionCommand("salvar"); 123: contentPane.add(btnSalvar); 124: 125: btnAlterar = new JButton(""); 126: btnAlterar.setIcon(new ImageIcon(LoginNovo.class.getResource("/img/edit.png"))); 127: btnAlterar.setForeground(new Color(160, 82, 45)); 128: btnAlterar.setFont(new Font("Ubuntu", Font.BOLD, 14)); 129: btnAlterar.setBounds(139, 179, 32, 25); 130: btnAlterar.addActionListener(this); 131: btnAlterar.setActionCommand("alterar"); 132: contentPane.add(btnAlterar); 133: 134: btnExcluir = new JButton(""); 135: btnExcluir.setIcon(new ImageIcon(LoginNovo.class.getResource("/img/delete.png"))); 136: btnExcluir.setForeground(Color.RED); 137: btnExcluir.setFont(new Font("Dialog", Font.BOLD, 12)); 138: btnExcluir.setBounds(225, 179, 32, 25); 139: btnExcluir.addActionListener(this); 140: btnExcluir.setActionCommand("excluir"); 141: contentPane.add(btnExcluir); 142: 143: cbLogin = new JComboBox(); 144: cbLogin.setBounds(183, 37, 146, 20); 145: contentPane.add(cbLogin); 146: 147: JLabel lblPesquisar = new JLabel("Pesquisar:"); 148: lblPesquisar.setFont(new Font("Arial Black", Font.BOLD, 12)); 149: lblPesquisar.setBounds(95, 40, 80, 14); 150: contentPane.add(lblPesquisar); 151: 152: btnSelecionar = new JButton(""); 153: btnSelecionar.setIcon(new ImageIcon(LoginNovo.class.getResource("/img/search.png"))); 154: btnSelecionar.setFont(new Font("Dialog", Font.BOLD, 12)); 155: btnSelecionar.setBounds(339, 36, 32, 25); 156: btnSelecionar.addActionListener(this); 157: btnSelecionar.setActionCommand("selecionar"); 158: contentPane.add(btnSelecionar); 159: 160: lblOperador = new JLabel("Operador:"); 161: lblOperador.setFont(new Font("Arial Black", Font.BOLD, 12)); 162: lblOperador.setBounds(95, 100, 80, 14); 163: contentPane.add(lblOperador); 164: 165: txtOperador = new JTextField(); 166: txtOperador.setBounds(183, 98, 146, 20); 167: contentPane.add(txtOperador); 168: txtOperador.setColumns(10); 169: 170: btnLimpar = new JButton(""); 171: btnLimpar.setIcon(new ImageIcon(LoginNovo.class.getResource("/img/clean.png"))); 172: btnLimpar.setForeground(new Color(0, 0, 255)); 173: btnLimpar.setFont(new Font("Dialog", Font.BOLD, 14)); 174: btnLimpar.setActionCommand("alterar"); 175: btnLimpar.setBounds(183, 179, 32, 25); 176: btnLimpar.addActionListener(this); 177: btnLimpar.setActionCommand("limpar"); 178: contentPane.add(btnLimpar); 179: 180: txtID = new JTextField(); 181: txtID.setEditable(false); 182: txtID.setBounds(183, 68, 41, 20); 183: contentPane.add(txtID); 184: txtID.setColumns(10); 185: 186: lblId = new JLabel("ID:"); 187: lblId.setFont(new Font("Arial Black", Font.BOLD, 12)); 188: lblId.setBounds(95, 70, 50, 14); 189: contentPane.add(lblId); 190: 191: this.carregaLista(); 192: } 193: 194: @Override 195: public void actionPerformed(ActionEvent e) { 196: if (e.getActionCommand().equals(this.btnSalvar.getActionCommand())) { 197: Login s = this.montaLogin(); 198: LoginCT lct = new LoginCT(); 199: lct.insert(s); 200: JOptionPane.showMessageDialog(null, "Login cadastrado."); 201: this.limpaTela(); 202: this.carregaLista(); 203: 204: } else if (e.getActionCommand().equals(this.btnAlterar.getActionCommand())) { 205: String message = "Confirma edição do login selecionada?"; 206: String title = "Confirmação"; 207: int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_CANCEL_OPTION); 208: if (reply == JOptionPane.YES_OPTION) { 209: Login s = this.montaLogin(); 210: LoginCT lct = new LoginCT(); 211: lct.update(s); 212: this.limpaTela(); 213: this.carregaLista(); 214: 215: } 216: 217: } else if (e.getActionCommand().equals(this.btnExcluir.getActionCommand())) { 218: String message = "Confirma exclusão do login selecionado?"; 219: String title = "Confirmação"; 220: int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_CANCEL_OPTION); 221: if (reply == JOptionPane.YES_OPTION) { 222: Login s = this.montaLogin(); 223: LoginCT lct = new LoginCT(); 224: lct.delete(s); 225: this.limpaTela(); 226: this.carregaLista(); 227: 228: } 229: } else if (e.getActionCommand().equals(this.btnLimpar.getActionCommand())) { 230: this.limpaTela(); 231: } else if (e.getActionCommand().equals(this.btnSelecionar.getActionCommand())) { 232: Login lct = (Login) cbLogin.getSelectedItem(); 233: this.setAcesso(lct); 234: } 235: 236: } 237: }