J2ME – Display UI Bileşeni

UI bileşenlerini ekranda göstermemiz için öncelikle ekrana sahip olmamız gerekir bu yüzden bir nesneyi ekrana atamadan önce ekran sahip olmalıyız. Bunun için Display tipinde bir nesne tanımlamalıyız. Display nesnesinin static bir metodu olan getDisplay() metodu ile belirttiğimiz bir midletin ekranını alabiliriz. Bu metoda almamız gereken midlet nesnesinin referansını göndermemiz gerekiyor.

    Display.getDisplay(MIDlet m);

Yukarıdaki kod bloğu ile ekran nesnesine sahip oluruz. Örneklemek gerekirse

    Display ekran = Display.getDisplay(this);

Burada ekran adında Display tipinde bir nesne yarattık. Bu nesneye Display sınıfının getDisplay metodu ile ulaştık ve parametre olarak this kelimesini gönderdik. Burada this kelimesi içerisinde bulunduğumuz MIDlet i belirtir. Yani bulunduğumuz MIDlet e ait bir ekran almış oluyoruz. Aksi bir durumda farklı bir MIDlet in referansınıda gönderebilirdik. Display tipinde bir referansa sahip olduktan sonra bu nesneye belli bir UI bileşenini atayabiliriz. Bu bileşen TextBox, Form, List, Alert ve Canvas olabilir. Aynı anda tek bir bileşen ekranda görülebilir. Yanlız Form nesnesine ait olan bazı bileşenler form nesnesine eklendikten sonra nesne ekrana verilebilir bu durumda yine tek bir nesne ekrana atanmış fakat form nesnesi içerisinde bir çok nesne olmuş olur.

    Display ekran=Display.getDisplay(this);
    ekran.setCurrent(nesne);

Yukarıdaki örnek yapıda aldığımız ekrana bir bileşen atıyoruz. Bu nesne yine TextBox, Form, List, Alert yada Canvas olabilir bu yapıyı örneklendirelim:

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
     
    public class OrnekMIDlet extends MIDlet {
        public void startApp() {
            TextBox ornek1= new TextBox("Ornek1","Ornek1",20,0);
            TextBox ornek2= new TextBox("Ornek2","Ornek2",20,0);
            Display ekran=Display.getDisplay(this);
            ekran.setCurrent(ornek1);
            ekran.setCurrent(ornek2);
        }
     
        public void pauseApp() {
        }
       
        public void destroyApp(boolean unconditional) {
        }
    }

Örneğimizde iki adet TextBox bir adette Display tipinde değişken yarattık. TextBox larımız ornek1 ve ornek2 dir. Öncelikle ornek1 nesnesini setCurrent() motodu ile ekranımıza atıyoruz artık ornek1 ekranımızda görülecektir. Sonrasında ekran.setCurrent(ornek2) ile ornek2 nesnemizi atadık bu durumda artık ekranda sadece ornek2 görünecektir. Yani ikinci adımdaki setCurrent() metodu birincisini ezmiştir.
Bu kodumuzun ekran çıktısı aşağıdaki gibidir.

display

Göründüğü gibi ekranımızda sadece Ornek2 mevcut. Aslında burada önce Ornek1 görünmüş sonrasında ise Ornek2 ekrana verilerek ekranı kaplamıştır. NetBeans te kodumuzu debug durumunda kodumuzu çalıştırırsak öncelikle Ornek1 in göründüğünü rahatlıkla görebiliriz.

Dec 22nd, 2008
  1. hc0de
    May 4th, 2010 at 08:33 | #1

    döküman için teşekkürler Melih hocam. Sormak istediğim birşey var. şöyle canlandırayım olayı. Ekranda bir canvas var, bu canvas’ın pointerPressed metodu gerçekleştiğinde ekrana canvas yerine bir form geliyor buraya kadar sorun yok. Sormak istediğim form’dan sonra ekrana bir daha aynı canvas’ı nasıl çağırabiliriz?

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>