J2ME – TextField UI Bileşeni

TextBox benzeri bir form bileşenidir tek başına ekrana atanamaz sadece form bileşenine eklenebilir. Form bileşeninin ekrana atanmasıyla ekranda görünür. Bir form üzerinde birden fazla TextField bileşeni olabilir.
Yapı olarak aşağıdaki gibidir.

    TextField(String label, String text, int maxSize, int constraints);

Label değişkeni TextField nesnesinin yanında yada üstünde bulunan etikettir. Bu bir form için “Ad” veya “Soyad” gibi bir form etiketi olabilir. text parametresi TextField içerisinde görünecek değerdir. maxSize TextField’ ın alabileceği maksimum değer, constraints ise textfield tipidir. Göründüğü gibi bu değerler TextBox ile hemen hemen aynıdır. Sadece ilk parametre TextBox için title’ dır.
TextField sınıfı için bir örnek yapalım.

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
     
    public class FormOrnek extends MIDlet {
        public void startApp() {
            Form kayitFormu= new Form("Kayit Formu");
            TextField ad= new TextField("Adiniz:","",20,TextField.ANY);
            kayitFormu.append(ad);
            Display ekran=Display.getDisplay(this);
            ekran.setCurrent(kayitFormu);
        }
       
        public void pauseApp() {
        }
       
        public void destroyApp(boolean unconditional) {
        }
    }

Yukarıdaki kodun ekran çıktısı aşağıdaki gibidir.
form-2

Göründüğü gibi tek bir satırda bulunan bir TextField nesnesi oluştu. Eğer nesnemiz TextBox olsaydı tüm ekranı kaplayacaktı.
Kodumuzda kayitFormu.append(ad); satırı olmasaydı ekranda TextField nesnesi görünmeyecekti. Nesne oluşmuş fakat forma eklenmemiş olacaktı.
Bir Form üzerinde birden fazla TextField olabilir demiştik bunu örneklendirelim.

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
     
    public class FormOrnek extends MIDlet {
        public void startApp() {
            Form kayitFormu= new Form("Kayit Formu");
            TextField ad= new TextField("Adiniz:","",20,TextField.ANY);
            TextField soyad= new TextField("Soyadiniz:","",20,TextField.ANY);
            TextField yas= new TextField("Yasiniz:","",20,TextField.NUMERIC);
            kayitFormu.append(ad);
            Display ekran=Display.getDisplay(this);
            ekran.setCurrent(kayitFormu);
        }
       
        public void pauseApp() {
        }
       
        public void destroyApp(boolean unconditional) {
        }
    }

Formumuza ad, soyad ve yas adında üç adet TextField bileşeni ekledik. Kodumuzun çıktısı aşağıdaki gibi olacaktır.

form-3

Göründüğü gibi ekranımızda üç adet TextField bileşeni göründü bunlardan yas TextFiled.NUMERIC constraints özelliğine sahip bu yüzden sadece sayı tipinde veri girişi yapılabilir. Bu özellikler TextBox contraints özellikleri ile aynıdır.

ANY - Herhangi bir karakter
EMAILADDR - E-mail adresi
NUMERIC - Sayı
PHONENUMBER - Telefon numarası
URL - İnternet adresi
DECIMAL - Ondalıklı
PASSWORD - Şifre

Bu özellikler TextField nesnesinin static ve final değişkenleridir bu yüzden nesnelerinin yaratılmasına gerek yoktur ve değerleri değiştirilemez.

setLabel() getLabel()
Label yani etiketlere erişmek için kullanılan metodlardır. Çalışma anında etiketler değiştirilebilir yada değerleri alınabilir.
Metodların yapısı aşağıdaki gibidir.

    setLabel(String label);
    getLabel();

setLabel(); metodu label adında String tipinde bir değişken alır. getLabel() ise label içeriğine erişmek için kullanılır.

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
     
    public class FormOrnek extends MIDlet {
        public void startApp() {
            Form kayitFormu= new Form("Kayit Formu");
            TextField ad= new TextField("Adiniz:","",20,TextField.ANY);
            System.out.println(ad.getLabel());
            ad.setLabel("Ad:");
            System.out.println(ad.getLabel());
            kayitFormu.append(ad);
            Display ekran=Display.getDisplay(this);
            ekran.setCurrent(kayitFormu);
        }
       
        public void pauseApp() {
        }
       
        public void destroyApp(boolean unconditional) {
        }
    }

Yukarıdaki örnekte ad isimli TextField nesnesinin label değeri nesne yaratılırken “Adiniz:” olarak veriliyor ancak daha sonra “Ad:” olarak değiştiriliyor. İşlem aralarında label değerleri konsol ekranına bastırılıyor.

setString() getString()
TextField içerisindeki değerlerin çalışma anında değiştirilmesini sağlar. Örnek olarak kontrol yaptığımız bir alanı setString() ile temizleyebiliriz.
Metodların yapısı aşağıdaki gibidir.

    setString(String text);
    getString();

setString() veriyi değiştirmek getString() ise var olan veriyi almak için kullanılır. Örnek olarak.

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
     
    public class FormOrnek extends MIDlet {
        public void startApp() {
            Form kayitFormu= new Form("Kayit Formu");
            TextField ad= new TextField("Adiniz:","",20,TextField.ANY);
            System.out.println(ad.getString());
            ad.setString("Melih");
            System.out.println(ad.getString());
            kayitFormu.append(ad);
            Display ekran=Display.getDisplay(this);
            ekran.setCurrent(kayitFormu);
        }
       
        public void pauseApp() {
        }
       
        public void destroyApp(boolean unconditional) {
        }
    }

Yukardaki kod bloğunda TextField nesnesini oluşturduğumuz anda içerisindeki değer boş olarak veriliyor. Sonraki adımda içerideki değer “Melih” olarak değiştiriliyor.

Dec 25th, 2008
No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>