Skip to content →

JTextField Numeric Only

Dibawah ini adalah salah satu cara membuat JTextField pada Java, khususnya platform Desktop, agar hanya menerima inputan dalam bentuk angka atau numeric. Cukup simple, ternyata kita tidak bisa men-settingnya hanya dengan menambahkan method seperti textfield.setText(“blablabla”); melainkan kita harus membuat class lagi yang isinya logika-logika yang dapat membuat si JTextField tersebut hanya menerima inputan.

Buat class baru bernama NumericTextField.java

[code lang=”java”]

public class NumericTextField {

public NumericTextField() {
}

public PlainDocument getOnlyDigit() {
PlainDocument filterDigit = new PlainDocument() {

@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
StringBuffer buffer = new StringBuffer();
int s = 0;
char[] dataInput = str.toCharArray();

//check data input
for (int i = 0; i < dataInput.length; i++) {
//filter data if data are string
boolean isOnlyDigit = Character.isDigit(dataInput[i]);
if (isOnlyDigit == true) {
dataInput[s] = dataInput[i];
s++;
}
}
buffer.append(dataInput, 0, s);
super.insertString(offs, new String(buffer), a);
}
};
return filterDigit;
}
}

[/code]

Nah fungsi dari class ini, adalah menentukan kalo yang diinputkan adalah angka, maka disimpan. Ada pada operasi if() dimana ia menyimpan data di array dataInput[s] apabila boolean isOnlyDigit bernilai true. Dan sebaliknya kalo yang diinputkan adalah simbol atau karakter maka tidak disimpan karena boolean isOnlyDigit bernilai false. Belum selesai loh…

Kemudian untuk menggunakannya dalam JTextField, cukup menambahkan kode dibawah ini…

[code lang=”java”]

textField.setDocument(new NumericTextField().getOnlyDigit());

[/code]

Published in Java

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *