Skip to main content

Cara Membuat Login

Cara Membuat Login Java Desktop
Artikel ini merupakan kelanjutan dari beberapa artikel sebelumnya yaitu :
  1. https://www.contohapps.com/2019/12/java-desktop-crud-create-read-update.html
  2. https://www.contohapps.com/2020/10/pencarian-data-java-desktop.html
  3. https://www.contohapps.com/2020/10/mencetak-laporan-menggunakan-ireport.html
  4. https://www.contohapps.com/2020/10/cara-membuat-login.html
dikarenakan saling terkait jika anda belum pernah mengikuti artikel diatas, silahkan dibuat terlebih dahulu, jika anda sudah membuatnya berarti struktur project saat ini kira-kira seperti gambar berikut :

Cara Membuat Login Java Desktop

Membuat Windows Form Register

sebelum membuat login tentu saja kita harus memiliki data user yang berisi username dan password, untuk itu kita perlu menambah sebuah tabel baru kemudian kita akan membuat sebuah windows form registrasi user, sekarang buatlah sebuah tabel baru dengan menjalankan script berikut pada database MySQL anda :
  CREATE TABLE USER (
  id_user VARCHAR(10) NOT NULL,
  username VARCHAR(20) NOT NULL,
  PASSWORD VARCHAR(20) NOT NULL,
  nama_user VARCHAR(25) NOT NULL,
  LEVEL VARCHAR(20) NOT NULL,
  PRIMARY KEY (id_user)
);
  
langkah berikutnya kita akan membuat sebuah windows  form baru pada netbeans didalam package form dengan nama form_user, rancanglah sebuah windows form tersebut seperti berikut :
Cara Membuat Login Java Desktop

ubahlah variabel - variabel diatas menjadi seperti berikut :
  1. txtiduser (JTextField)
  2. txtusername (JTextField)
  3. txtpassword (JPasswordField)
  4. txtnamauser (JTextField)
  5. cblevel (JCombobox)
  6. btnbaru (JButton)
  7. btnupdate (JButton)
  8. btnsimpan (JButton)
  9. btnhapus (JButton)
  10. btnedit (JButton)
  11. tbuser (JTable)

Menampilkan Data User

untuk menampilkan data user kita akan membuat fungsi tampil_data seperti berikut :


public void TampilData() {
        DftTblModel_user = new DefaultTableModel();
        DftTblModel_user.addColumn("ID");
        DftTblModel_user.addColumn("USERNAME");
        DftTblModel_user.addColumn("PASSWORD");
        DftTblModel_user.addColumn("NAMA USER");
        DftTblModel_user.addColumn("LEVEL");
        tbuser.setModel(DftTblModel_user);
        Connection conn = Koneksi.getConnection();
        try {
            Statement stmt = conn.createStatement();
            SQL = "select * from user";
            ResultSet res = stmt.executeQuery(SQL);
            while (res.next()) {
                DftTblModel_user.addRow(new Object[]{
                    res.getString("id_user"),
                    res.getString("username"),
                    res.getString("password"),
                    res.getString("nama_user"),
                    res.getString("level")
                });
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
koding diatas digunakan untuk menampilkan data user, agar data user bisa tampil kita harus benar dalam melakukan import header, pemanggilan fungsi tampilData tersebut dan pendekalarasian variabel yang dibutuhkan. berikut ini adalah header yang dibutuhkan untuk menmpilkan data : 


import Konfigurasi.Koneksi;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

kemudian untuk melakukan pendeklarasian variabel dan pemanggilan fungsi TampilData kita buat  tepat dibawah nama class, codingnya seperti berikut :

public class form_user extends javax.swing.JFrame {
    private DefaultTableModel DftTblModel_user;
    private String SQL;
    /**
     * Creates new form form_user
     */
    public form_user() {
        initComponents();
        TampilData();
    }
    ....

Simpan Data User

Sebelum melakukan penyimpanan data kita perlu menekan tombol Baru untuk mengaktifkan tombol simpan, untuk itu silahkan berikan event klik pada tombol baru kemudian masukan coding berikut :
        kodeOtomatis();
        txtusername.requestFocus();
        btnsimpan.setEnabled(true);
        btnupdate.setEnabled(false);
        btnhapus.setEnabled(false);
        btnupdate.setEnabled(false);
Jika kita perhatikan coding diatas terdapat sebuah fungsi kodeOtomatis() kode ini digunakan untuk membuat penomoran id_user secara otomatis ketika tombol baru di tekan secara otomatis akan menampilkan id_user yang akan disimpan. berikut adalah coding pada fungsi kodeOtomatis() :

  private void kodeOtomatis() {
        try {
            int akhir = 0;
            Connection conn = Koneksi.getConnection();
            String query = "SELECT MAX(RIGHT(id_user,1)) AS jml FROM USER";
            PreparedStatement pst = conn.prepareStatement(query);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                akhir = Integer.parseInt(rs.getObject("jml").toString());
            }
            if (akhir == 0) {
                txtiduser.setText("U001");
            } else {
                String no = String.valueOf(akhir + 1);
                int noLong = no.length();
                for (int a = 0; a < 3 - noLong; a++) {
                    no = "0" + no;
                }
                txtiduser.setText("U" + no);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
  
 
Setelah memasukan coding pada tombol Baru selanjutnya kita akab membuat coding untuk melakukan penyimpanan data dengan coding berikut :

try {
            Connection conn = Koneksi.getConnection();
            PreparedStatement stmt = conn.prepareStatement("insert into user(id_user, username, password, nama_user, level) values(?,?,?,?,?)");
            stmt.setString(1, txtiduser.getText());
            stmt.setString(2, txtusername.getText());
            stmt.setString(3, txtpassword.getText());
            stmt.setString(4, txtnamauser.getText());
            stmt.setString(5, cblevel.getSelectedItem().toString());
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null, "Data berhasil disimpan", "Pesan", JOptionPane.INFORMATION_MESSAGE);
            tampilData();
            kodeOtomatis();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        btnbaru.setEnabled(true);
        btnsimpan.setEnabled(true);
        btnhapus.setEnabled(false);
        btnupdate.setEnabled(false);

Update Data

untuk melakukan pengubahan data kita perlu membuat sebuah event pada tabel untuk memilih data yang akan kita ubah, data yang akan kita ubah akan muncul pada tiap-tiap textfield sehingga akan memudahkan kita untuk melakukan ubah data, berikut adalah event pada mouse click pada tabel : 

 int baris = tbuser.getSelectedRow();
        txtiduser.setText(DftTblModel_user.getValueAt(baris, 0).toString());
        txtusername.setText(DftTblModel_user.getValueAt(baris, 1).toString());
        txtpassword.setText(DftTblModel_user.getValueAt(baris, 2).toString());
        txtnamauser.setText(DftTblModel_user.getValueAt(baris, 3).toString());
        cblevel.setSelectedItem(DftTblModel_user.getValueAt(baris, 4).toString());

        btnbaru.setEnabled(true);
        btnhapus.setEnabled(true);
        btnupdate.setEnabled(true);
        btnsimpan.setEnabled(false);
Setelah muncul pada masing-masing textfield kita tinggal memilih kolom apa yang akan diubah, kemudian klik tombol Update, pada tombol update berikan coding berikut :

try {
            Connection conn = Koneksi.getConnection();
            PreparedStatement stmt = conn.prepareStatement("update user set username=?, password=?, nama_user=?, level=? where id_user=?");
            stmt.setString(1, txtusername.getText());
            stmt.setString(2, txtpassword.getText());
            stmt.setString(3, txtnamauser.getText());
            stmt.setString(4, cblevel.getSelectedItem().toString());
            stmt.setString(5, txtiduser.getText());
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null, "Data berhasil diubah", "Pesan", JOptionPane.INFORMATION_MESSAGE);
            tampilData();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        btnupdate.setEnabled(false);
        btnsimpan.setEnabled(false);
        btnhapus.setEnabled(false);
        btnbaru.setEnabled(true);
terakhir adalah coding hapus data, untuk melakukan hapus data caranya sama ketika akan mengupdate yaitu harus memilih data yang akan di hapus, stelah itu tekan tombol hapus, pada tombol hapus berikan coding berikut :

Connection conn = Koneksi.getConnection();
        int confirm = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin menghapus data tersebut?", "Konfirmasi", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (confirm == 0) {
            try {
                java.sql.PreparedStatement stmt = conn.prepareStatement("delete from user where id_user ='" + txtiduser.getText() + "'");
                stmt.executeUpdate();
                JOptionPane.showMessageDialog(null, "Data berhasil dihapus", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                tampilData();
            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Data gagal di hapus" + e.getMessage(), "Pesan", JOptionPane.ERROR_MESSAGE);
            }
        }
        btnbaru.setEnabled(true);
        btnsimpan.setEnabled(false);
        btnhapus.setEnabled(false);
        btnupdate.setEnabled(false);
        btnupdate.setEnabled(false);

Hapus Data

untuk melakukan hapus data user  siahkan gunakan coding berikut :

  Connection conn = Koneksi.getConnection();
        int confirm = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin menghapus data tersebut?", "Konfirmasi", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (confirm == 0) {
            try {
                java.sql.PreparedStatement stmt = conn.prepareStatement("delete from user where id_user ='" + txtiduser.getText() + "'");
                stmt.executeUpdate();
                JOptionPane.showMessageDialog(null, "Data berhasil dihapus", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                tampilData();
            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Data gagal di hapus" + e.getMessage(), "Pesan", JOptionPane.ERROR_MESSAGE);
            }
        }
        btnbaru.setEnabled(true);
        btnsimpan.setEnabled(false);
        btnhapus.setEnabled(false);
        btnupdate.setEnabled(false);
        btnupdate.setEnabled(false);
  
 


Login Form

Sampai tahap ini kita sudah selesai membuat windows form registrasi user selanjutnya adalah membuat windows form login,logika pada login ini adalah melakukan pengecekan atau filter terhadap tabel user pada kolom username,password dan level, jika data tersebut ada di tabel maka login akan berhasil kemudian akan memanggil windows form user, tetapi jika data pada tabel tersebut tidak ada maka login gagal. buatlah sebuah windows form baru pada package form dengan windows  nama form_login kemudian  rancanglah form tersebut seperti gambar berikut :
Cara Membuat Login Java Desktop
berikan nama varaibel pada masing-masing textfield diatas sebagai berikut :
  1. txtuser (JTextField)
  2. txtpass (JPasswordField)
  3. cblevel (JCombobox)
  4. btnLogin (JButton)
  5. btnCancel (JButton)
berikat event click pada tombol masuk (btnLogin) kemudian masukan coding berikut :
 try {
            int juser=0;
            Connection conn = Koneksi.getConnection();
            String sql = "SELECT Count(*) as jml FROM user WHERE username = '" + txtuser.getText() + "' AND password = '" + txtpass.getText() + "' AND level='" + cblevel.getSelectedItem().toString() + "'";
            System.out.println(sql);
            Statement stmt = conn.createStatement();
            ResultSet res = stmt.executeQuery(sql);
              if (res.next()) {
                  juser=Integer.parseInt(res.getObject("jml").toString());
                  if(juser > 0){
                       JOptionPane.showMessageDialog(null, "Login Berhasil", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                       new form_user().show();
                  }else{
                       JOptionPane.showMessageDialog(null, "Login Gagal", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                  }
              }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
kemudian berikan event pada btnCancel dengan coding sebagai berikut :
dispose();
Berikut hasil akhir dari form register dan login :

 
Cara Membuat Login Java Desktop

Cara Membuat Login Java Desktop




Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar
Tutup Komentar