by Abu Zubayr

Membatasi Jenis Inputan pada JTextField

membatasi jenis inputan pada jtextfield

Bismillah ...

Pada suatu keadaan kita akan menjumpai dimana pada sebuah inputan komponen JTextField diminta hanya bisa menerima inputan angka saja atau huruf saja. Sebagai contoh untuk inputan nim mahasiswa, nomor ktp dan lain-lain yang inputannya hanya berupa angka. Nah, pada psotingan ini saya akan memberikan contoh untuk membatasi inputan-inputan tersebut.

Method yang akan kita gunakan untuk membatasi inputan pada komponen JTextField adalah method setDocumentFilter() dan selanjutnya menggunakan kelas DocumentFilter serta meng-override method replace() dari kelas tersebut.

Berikut adalah contoh pembuatan methodnya:
private void triggerText(JTextField tx, int max){
        ((AbstractDocument) tx.getDocument()).setDocumentFilter(new DocumentFilter() {
            Pattern pattern = Pattern.compile("\\d");
            /* Pattern digunakan untuk memfilter jenis inputan apa yang boleh masuk
            Untuk melihat jenis regular-expression buka di https://docs.oracle.com/javase/7/docs/api/util/regex/Pattern.html
            */
            @Override
            public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
                Matcher matcher = pattern.matcher(text);// kelas Matcher digunakan untuk mencocokkan inputan pengguna dengan jenis regular-expression
                if (!matcher.matches())//jika inputan tidak cocok dengan pattern maka return;
                    return;
                
                if(tx.getText().length()>max)//jika jumlah length text melebihi ketentuan maka return;
                    return;
                super.replace(fb, offset, length, text, attrs);
            }
        });
 }    

Contoh penggunaan method diatas adalah sebagai berikut :
package az.dialog.gui;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class DemoText extends JFrame{ 
    public DemoText(){
        super("Demo Trigger Text");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,100);
        
        JTextField text = new JTextField();
        triggerText(text, 25);
        getContentPane().add(text);
    }
    
    private void triggerText(JTextField tx, int max){
        ((AbstractDocument) tx.getDocument()).setDocumentFilter(new DocumentFilter() {
            Pattern pattern = Pattern.compile("\\d");
            /* Pattern digunakan untuk memfilter jenis inputan apa yang boleh masuk
            Untuk melihat jenis regular-expression buka di https://docs.oracle.com/javase/7/docs/api/util/regex/Pattern.html
            */
            @Override
            public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
                Matcher matcher = pattern.matcher(text);// kelas Matcher digunakan untuk mencocokkan inputan pengguna dengan jenis regular-expression
                if (!matcher.matches())//jika inputan tidak cocok dengan pattern maka return;
                    return;
                
                if(tx.getText().length()>max)//jika jumlah length text melebihi ketentuan maka return;
                    return;
                super.replace(fb, offset, length, text, attrs);
            }
        });
    }    
    
    public static void main(String[]args){
        new DemoText().setVisible(true);
    }
}

Demikianlah tutorial Membatasi Jenis Inputan pada JTextField. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari blog ini, silahkan isi email anda pada isian Follow by Email dibawah.

Terima kasih... wassalam
loading...
Share:

0 Comments:

Post a Comment

DigitalOcean Referral Badge
www.domainesia.com
Powered by Blogger.