Tuesday 3 December 2013

Set Khusus Inputan Berupa Numerik Pada Text Field di Java


Pada sebuah kasus tertentu, ada kalanya sebuah inputan user yang berasal dari text field hanya bisa menginputkan berupa numerik. Misalkan text field nomer telepon, sebuah text field untuk inputan nomer HP atau nomer telepon harus berupa numerik. Sehingga ketika user menginputkan berupa huruf dan karakter-karakter seperti (+ – * @ ! # $ %) dan lain-lain tidak diperbolehkan dan tidak akan diproses. Oleh karena itu kita harus memberikan filter pada inputan pada JTextField tersebut sehingga text field tersebut hanya bisa membaca inputan angka/numerik.

Buatlah class dengan nama FilterOnlyNumber, kemudian isikan dengan code berikut:

import javax.swing.text.AttributeSet;  
import javax.swing.text.BadLocationException;  
import javax.swing.text.PlainDocument;  
  
public class OnlyNumber {  
  
    public OnlyNumber() {  
    }  
  
    /** methode ini dipakai untuk mengeset dan mendapatkan filter 
     *  @return mengembalikan filter bertype PlainDocument 
     *  Menyaring Hanya karakter angka (Digit) yang bisa dimasukkan 
     */  
    public PlainDocument getOnlyNumber() {  
        PlainDocument filterNumber = 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();  
                // Memeriksa semua data yang dimasukkan  
                for (int i = 0; i < dataInput.length; i++) {  
                    // Menyaring Apakah data masukkan berupa DIGIT ??  
                    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 filterNumber;  
    }  
} 


Kemudian buatlah class untuk desain Frame dan masukkan komponen-komponen yang dibutuhkan, seperti JTextField. Pada JFrame tersebut, masuklah ke tab Designpilih JTextField yang akan kita filter khusus untuk inputan angka, kemudian klik kanan – pilih Costumize Code. Dan tambahkan syntax berikut dan letakkan dibagian bawah dari source asli, lihat gambar : 
jTextField1.setDocument(new OnlyNumber().getOnlyNumber()); 


Semoga bermanfaat!
sumber : http://www.mudafiqriyan.net/2012/12/set-khusus-inputan-berupa-numerik-pada-text-field-di-java/

No comments:

Post a Comment