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.