Validasi Pada JTextField


bagaimana kalo validasi biner?Sebenarnya gak harus biner, tapi bisa juga hexa ato oktal, tapi saya males kalo bikin scrip panjang-panjang. OK langsung ke permasalahan, misal kita pengen memvalidasi sebuah JTextField agar input yang dimasukkan harus bilangan binner…

Sebelum masuk ke solusi mungkin kita harus bahas dulu tentang masalahnya. Karena bilangan yang diinput harus biner maka karakter yang boleh diinput Cuma ‘0’ dan ‘1’. Bener kan, setahu saya sih di mata kuliah Aljabar Boolean dan Pengantar Ilmu Komputer sih bener, hehehe…

Solusi Standar?

Solusi yang digunakan adalah dengan membuat sebuah validasi, misal ada form yang diminta diinputkan bilangan biner trus ketika disubmit maka akan divalidasi apakah input yang dimasukkan adalah biner atau bukan, jika bukan maka akan ada pesan kesalahan.

Sekarang coba anda buat sebuah Form seperti dibawah ini :

Saya sarankan untuk menggunakan NetBeans, karena NetBeans memiliki plugin yang sangat berguna untuk pengembang Swing yaitu “Mattise GUI Builder”, sehingga kita bisa membuat aplikasi Swing dengan cepat dam mempercepat proses pembuatan 99% dari pada anda coding sendiri…

Sekarang kita tinggal memberi validasi untuk JTextField :

Langkah pertama kita tambahkan sebuah ActionListener untuk tombol Submit. Lalu buat seluruh validasi dalam ActionListener buton tersebut. Pertama kita buat sebuah array katakter dari input textfield:

char[] array = textFieldBinner.getText().toCharArray();

setelah buat variabel boolean yang menyatakan apakah input yang dimasukkan valid atau tidak, jangan lupa untuk mendeklarasikan variabelnya dengan nilai false hal ini berguna ketika user tak menginputkan satu karakterpun ke dalam JTextField:

boolean valid = false;

buat perulangan yang mengecek setiap karakter dalam array karakter yang telah dibuat sebelumnya, jika input merupakan bilangan biner yang artinye terdiri dari karakter ‘1’ dan ‘0’, maka validasi bernilai true, dan sebaliknya jika salah validasi bernilai false :

for (char i : array) {

if (i == ‘0’ || i == ‘1’) {

valid = true;

} else {

valid = false;

break;

}

}

break” berguna agar perulangan berhenti ketika menemukan karakter yang tak valid. Setelah itu buat message box yang menampilkan hasil validasi :

if (valid) {

JOptionPane.showMessageDialog(null, “BENAR”);

} else {

JOptionPane.showMessageDialog(null, “SALAH”);

}

Dan dibawah ini adalah kode lengkapnya :

char[] array = textFieldBinner.getText().toCharArray();

boolean valid = false;

for (char i : array) {

if (i == ‘0’ || i == ‘1’) {

valid = true;

} else {

valid = false;

break;

}

}

if (valid) {

JOptionPane.showMessageDialog(null, “BENAR”);

} else {

JOptionPane.showMessageDialog(null, “SALAH”);

}

Sehingga ketika user salah menginputkan data salah maka akan muncul pesan kesalahan :

Dan jika user benar menginputkan data, maka akan muncul pesan :

Solusi Ngawur?

Wah kalo saya gunakan solusi standar diatas, cape deh! Tiap memvalidasi saya harus tekan tombol submit dulu. Saya sich pengen langsung aja divalidasi ketika user memasukkan data, jadi ketika user menekan key yang bukan merupakan bilangan biner, maka JTextField gak kan menampilkan key yang ditekan tersebut.

Dalam sebuah JTextField, data string yang kita inputkan itu di masukkan ke dalam sebuah Document dan secara default JTextField menggunakan PlainDocument, hal ini dikarenakan JTextField hanya mendukung 1 style, berbeda dengan JTextPane yang mendukung banyak style. nah kembali kepermasalahan untuk memvalidasi input JTextField agar tak masuk ke Document, kita harus sedikit memberi trik saat sebuah input String masuk ke Document. Caranya adalah dengan membuat Document sendiri, lalu menset Document tersebut ke JTextField:

textFieldBinner.setDocument(new PlainDocument() {

@Override

public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {

// Validasi Disini

super.insertString(offs, str, a);

}

});

Pada skrip diatas saya menset sebuah JTextField dengan PlainDocument yang saya override salah satu metodenya yaitu insertString, kenapa mengoveride metode tersebut? Karena sebuah String yang akan masuk ke Document harus melewati metode tersebut sehingga kita bisa validasi setiap karakter yang akan masuk ke Document.

Sama seperti halnya solusi standar diatas, untuk solusi ngawur pun kita menggunakan validasi yang sama seperti solusi standar hanya berbeda pada akhir skript :

char[] array = str.toCharArray();

boolean valid = false;

for (char i : array) {

if (i == ‘0’ || i == ‘1’) {

valid = true;

} else {

valid = false;

break;

}

}

if (valid) {

super.insertString(offs, str, a);

} else {

Toolkit.getDefaultToolkit().beep();

}

Artinya jika validasi berjalan benar maka, string yang diinputkan user akan dimasukkan ke Document jika salah maka akan ada bunyi beep, tergantung suara dalam setting default komputer anda. Dan script lengkapnya seperti ini :

textFieldBinner.setDocument(new PlainDocument() {

@Override

public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {

char[] array = str.toCharArray();

boolean valid = false;

for (char i : array) {

if (i == ‘0’ || i == ‘1’) {

valid = true;

} else {

valid = false;

break;

}

}

if (valid) {

super.insertString(offs, str, a);

} else {

Toolkit.getDefaultToolkit().beep();

}

}

});

Sekarang coba jalankan lalu masukkan inputan selain ‘1’ dan ‘0’, pasti akan terdengar suara beep :

Kesimpulan

Untuk memvalidasi inputan user anda cukup mengoverride dan merubah metode insertString dalam Document yang diset ke JTextField

14 pemikiran pada “Validasi Pada JTextField

  1. Mas Echooo gimana ya.. caranya meload form lain di NetBeans…? soalnya dari sekian banyak tutorial yang ane baca cuma ada single form gak ada yang multiple form. Tulung ya… di posting atau dikasih ke e-mail saya di farazinux@mail.com
    Trims…..
    Eh … boleh ane link ya.. di blog farazinux.wordpress.com
    Thanks… hebat…

  2. mas.. echoo… tolong dong buatin contoh multiple form dan hasilNya dari semua yg telah kita input kemudian di tampilin ke dalam bentuk table GUI…

    tolong di posting atau kirim k e-mail saya…

    atas perhatiannya terima kasih.. ^.^

    thx..

  3. Ping balik: Belajar JaVa « WAHYU FIGHTER

  4. hi mas echo thanks banget tutorialx bwt validasi inputan JTextField

    BTW aq boleh nanya bwt validasi inputan JTextField dimana inputannya
    hanya boleh angka g???

    Please yach…

    Help Me

    Thanks B4

  5. Ping balik: Tutorial Java dari Eko Kurniawan Khannedy « nge-WP@net

  6. maksh bro tutorialnya…btw m tnya nih… gmn kalo validasiy g cuma buat angka saja tapi juga buat huruf dan karaktr lainya n ap bisa qt pk selain net beans

  7. mas Kalo GW mau Masukin Ya CUMan Angka dan huruf

    huruf dulu terus baru angaka, huruf hanya di depan bisa nya dan abis gitu anggka gimana validasi ya kirim ke imel gw ya source code yaAtu blog gw

  8. mas Kalo GW mau Masukin Ya CUMan Angka dan huruf

    huruf dulu terus baru angaka, huruf hanya di depan bisa nya dan abis gitu anggka gimana validasi ya kirim ke imel gw ya source code yaAtu blog gw okem oke

  9. textFieldBinner.setDocument(new PlainDocument() {

    @Override

    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {

    char[] array = str.toCharArray();

    boolean valid = false;

    for (char i : array) {

    if (i == ‘0′ || i == ‘1′) {

    valid = true;

    } else {

    valid = false;

    break;

    }

    }

    if (valid) {

    super.insertString(offs, str, a);

    } else {

    Toolkit.getDefaultToolkit().beep();

    }

    }

    });
    coding ini taruh dimana kalau pake netbeans?

Tinggalkan Balasan ke ulil Batalkan balasan