oleh Dedy Gunanto


Mungkin anda menemukan sedikit kesulitan saat ingin mengetahui apa sih isi dari komponen jPasswordField di java. Memang, pada awal cukup pusing untuk mengetahui isi password dari jPasswordField. Biasanya jika programmer java pemula ingin mengetahui isi dari txtPassword seperti gambar di atas, tentunya akan membuat kode program berikut:

@Action
public void CekPassword() {
String Username,Password = new String(””);
Username = txtUsername.getText();
Password = txtPassword.getPassword().toString();

JOptionPane.showConfirmDialog(null,
“Username : ” + Username + “\nPassword : ” + Password,
“Isi Login”, JOptionPane.DEFAULT_OPTION);
}

Saya akan mengisi username = dedygunanto dan password=rahasia, dan jika anda menekan tombol Submit anda akan melihat hasilnya seperti ini:

Lho, kok?

Ada yang aneh bukan, kenapa isi String Password menjadi demikian, bukankah seharusnya isi “rahasia”.

Jawabnya

Karena yang dihasilkan oleh txtPassword.getPassword().toString(); adalah sekumpulan dari array char menjadi String, hasilnya seperti yang anda lihat pada gambar di atas.

Solusi

Cara 1

Lalu, bagaimana cara mengetahui isi dari txtPassword dengan benar. Berikut kita akan membuat kode program perbandingan password dengan array char:

@Action
public void CekPassword() {
   char[] YangBenar = {'r','a','h','a','s','i','a'};
   boolean Pernyataan = new Boolean(false);

   Pernyataan = txtUsername.getText().equals("dedygunanto") &&
  Arrays.equals(txtPassword.getPassword(),YangBenar);
  if(Pernyataan == true){
        JOptionPane.showConfirmDialog(null, "Yap, anda benar",
        "Login", JOptionPane.DEFAULT_OPTION);
  }else{
        JOptionPane.showConfirmDialog(null, "Login anda salah",
        "Login", JOptionPane.DEFAULT_OPTION);
  }
}

Hasilnya:

Analisa

Dari Cara 1 di atas, ada satu hal yang menjadi kesalahan besar, karena tidak mungkin password selalu sama dengan cara statik dari kode program, karena dengan cara demikian maka program menjadi kaku. Bagaimana jika kita ingin mengecek Username dan Password dari database? Maka Cara 1 akan menemui kesulitan besar. Lalu, bagaimana cara yang benar?

Cara yang paling singkat adalah mengubah nilai dari txtPassword.getPassword() menjadi String. Berikut contoh untuk mengubah txtPassword.getPassword() menjadi string:

Cara 2

// buat prosedur PasswordToString
public static String PasswordToString(char[] cPasswordNya)
{
           String Isinya = new String("");

           for (int i = 0; i < cPasswordNya.length; i++)
           {
                   Isinya += cPasswordNya[i];
           }
           return Isinya;
}
@Action
public void CekPassword() {
   String Username, Password = new String("");

   Username = txtUsername.getText();
   Password = PasswordToString(txtPassword.getPassword()); // penggunaannya

   boolean Pernyataan = Username.equals("dedygunanto") &&
                        Password.equals("rahasia");

   if(Pernyataan == true){
         JOptionPane.showConfirmDialog(null, "Yap, anda benar",
                 "Login", JOptionPane.DEFAULT_OPTION);
   }else{
         JOptionPane.showConfirmDialog(null, "Login anda salah",
                "Login", JOptionPane.DEFAULT_OPTION);
  }
}

Atau, ada satu cara lagi yang lebih mudah dan simple

Cara 3

public void CekPassword() {
   String Username, Password = new String("");

   Username = txtUsername.getText();
   // cara baru, tidak perlu menggunakan prosedur PasswordToString
   Password = new String(txtPassword.getPassword()); 

   boolean Pernyataan = Username.equals("dedygunanto") &&
                        Password.equals("rahasia");

   if(Pernyataan == true){
         JOptionPane.showConfirmDialog(null, "Yap, anda benar",
                 "Login", JOptionPane.DEFAULT_OPTION);
   }else{
         JOptionPane.showConfirmDialog(null, "Login anda salah",
                "Login", JOptionPane.DEFAULT_OPTION);
  }
}

Nah, dari contoh Cara 2 dan 3 ini, anda bisa gunakan untuk login ke database, anda tinggal mengubah sedikit dari kode program tersebut dan menggabungkannya dengan perintah untuk pencarian username dan password di database.

Moga bermanfaat