Java Keylistener (Text alanina Sadece sayisal deger girme)
Bu yazimda Java da textfield alanina girilmesini istemedigimiz tuslari engellemenin nasil yapilacagini anlatacagim.
Genellikle textfield alanina sadece rakam girmek isteyebiliriz. Örnegin yas degerini telefon degerini veyada sayisal baska bir degeri almak için kullanacagimiz text alanina sadece rakam girilmesi için belli bir islem yapmamiz gerekir. Tutarsizlik çikmasini önlemek için bu alanlara harf girisini engellemeliyiz.
Ilk olarak keylistener sinifini kullanmaliyiz…
Bir sinif açalim öncelikle adi Keylist olsun ve bu sinifi keylistener kütüphanesinden implements etmeliyiz.
public class KeyList implements KeyListener { public tabmenu tb = new tabmenu();//bir önceki derste yaptigimiz tab menu sinifinda herhangi bir text alanina bu maskelemeyi yapacagimizdan bu sinifin nesnesini türettik public void keyTyped(KeyEvent e) { char caracter = e.getKeyChar();//hangi tusa basildigini okuyoruz if (((caracter < '0') || (caracter > '9')) && (caracter != '\b')) {// bu if sart kontrolünde sadece 0 ile 9 arasinda rakamlarin girilebilecegini belirtiyoruz e.consume(); } } public void keyPressed(KeyEvent e) {//tusa basildiginda aktif olur. } public void keyReleased(KeyEvent e) {//tus birakildiginda aktiflesir. } }
Bu class böyle olusturulduktan sonra diger siniftan nasil gönderecegimizi anlatacagiz. Bu arada hangi tusa basildigini KeyEvent.getKeyCode(); fonksiyonu ile okumakta mümkündür.
Öncelilee tabmenu sinifinda
public JTextField jt_turAdedi;
Bir text alani olustururyoruz.
Sonra keylist sinifinin nesnesini ve o sinifta bu sinifin nesnesini bularak esitliyoruz.
KeyList kl = new KeyList(); kl.tb = this;
Bütün bunlari yaptiktan sonra text alanimizin özelliklerini olusturuyoruz:
jt_turAdedi = new JTextField(); jt_turAdedi.setBackground(Color.white); jt_turAdedi.setBounds(170, 300, 125, 25); jt_turAdedi.addKeyListener(kl);
En önemlisi de AddKeylistener(kl) ile kontrolleri yapacagimiz sinifin nesnesini gönderiyoruz.
Artik bu text alanina sadece sayisal deger girmek mümkün. Bu ve bunun gibi kontroller ile text alanlarina istedigimiz esnekligi kazandirmamiz mümkün…
Faydalandığım bir çalışma oldu teşekkürler. Yanlız virgüllü rakam giremiyoruz, bir çözümü var mıdır.