Bismillah ...
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...
0 Comments:
Post a Comment