Monday, December 21, 2009

JTextField dengan input numerik

ketika mengerjakan sebuah proyek, saya ingin membuat sebuah input yang hanya menerima masukan berupa angka. Inginnya pada keyboard hanya tombol angka saja yang berfungsi.
Untuk itu perlu sebuah class turunan dari PlainDocument yang mengecek apakah input berupa angka atau bukan. Berikut contoh sederhananya :


public class InputNumerik extends PlainDocument
{


//Constructor
public InputNumerik()
{

}

//Insert string method

@Override
public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException
{
if (str != null){
boolean nomor;
nomor = true;
try
{
Double stringkedouble = Double.valueOf(str);
}catch(NumberFormatException nfe) {
nomor = false;
}
}
if (!nomor)
{
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, str, attr);
}
return;
}

kemudian objek JTextFieldnya :

JTextField inputUangMuka = new JTextField();
inputUangMuka.setDocument(new InputNumerik());