J2ME - MIDlet Gelistirme
Geçen yazılarda J2ME mimarisi, NetBeans kurulumu ve NetBeans ile J2ME ile uygulama gelistirmeden bahsetmistik. Simdi J2ME nin temelini olusturan MIDlet konusuna ve NetBeans ile J2ME uygulamalari gelistirmeyi inceleyecegiz. Asagidaki yazidaki adimlari bildigimizi varsayarak uygulama gelistirme safhasina geciyoruz. Netbeans Ile J2ME Uygulama Gelistirme/
Oncelikle Demo projemize sag tusla tikliyoruz ve new -> MIDlet secenegini seciyoruz.
Acilan pencereden MIDlet Name kismina bir isim veriyoruz. Bu ayni zamanda MIDlet imizin adi olacaktir. Biz DemoMIDlet veriyoruz. Package kismina bir paket adi verebiliriz buna com.melih.demo adini veriyoruz ve finish deyip ilk MIDlet class imizi olusturuyoruz.
Asagida oluşturulan kod görülüyor açıklama satırları ve paketler de dahil olmak üzere tüm kodları bizim için oluşturdu.
/* * To change this template, choose Tools | Templates* and open the template in the editor.*/ package com.melih.demo; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * @author Melih */ public class DemoMIDlet extends MIDlet { public void startApp() { } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
“public class DemoMIDlet extends MIDlet{}” ile MIDlet kütüphanesini miras alıyoruz. Bu sayede yeni bir midlet classı yaratmış oluyoruz.
Asagidaki kod midletimizin gövdesini oluşturuyor. Midlet classı abstract bir class olduğundan bu metodlar implemente edilmelidir. Bu alanda midletin hareketlerine göre işlem yapıyoruz (başlama, durma, kapatılma).
startApp() metodu midlet çalıştırıldığında pauseApp() metodu midlet durduğunda, destroyApp(boolean unconditional) ise midlet kapatıldığında çalışan metodlardır.
public void startApp() {} public void pauseApp() {} public void destroyApp(boolean unconditional) { }
Şimdi uygulamamızı çalıştıralım bunun için üstteki menüden Run -> Run Main Project e bir kere tıklayalım yada F6 tuşuna basarakta bu işlemi yapabiliriz. Eğer uygulamamızı debug modunda çalıştırmak istiyorsak Debug Main Project e tıklamalı veya F5 tuşuna basmalıyız. Biz şimdilik F6 ile uygulamamızı çalıştıralım.
Karşımıza aşağıda da göründüğü gibi bir cep telefonu simülasyonu çıktı bu simülasyon uygulamamızı aynı telefon ortamındaki gibi çalıştırmamızı sağlayan bir ortam.
Şu an için bizim tek bir midletimiz var bunun ismide “DemoMIDlet” bunu ekranda görebiliyoruz şimdi telefonun sağ alt köşesinde bulunan Launch seçeneğini seçelim. Telefonumuzda dokunmatik bir ekran yada mause olmadığından bu işlemi aynı cep telefonlarındaki gibi tuşlar vasıtasıyla yapacağız tabi ileriki konularda kalem kullanan P900 tarzı telefonlarda bu kalem eventini dinleyen uygulamalarda yapacağız. Şimdi Launch seçeneğini altındaki tuş vasıtasıyla seçelim.
Ben tıklıyorum ancak hiç bir tepki vermiyor ? Acaba neden ? Çünkü şu an için midletin içerisine hiç bir şey yazmadık. Başlangıç anı (startApp() ) yada kurucu metod içerisinde bir şey görünmüyor. O zaman basit bir uygulama ile başlayalım örnek olarak içerisinde sadece bir textBox olan bir uygulama yazalım.
/* * To change this template, choose Tools | Templates* and open the template in the editor.*/ package com.melih.demo; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * @author Melih */ public class DemoMIDlet extends MIDlet { public void startApp() { TextBox textAlani= new TextBox("Yazı Alanı","Burası içerik alanı",20,TextField.ANY); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
Bu uygulamamızda textAlani adında basit bir TextBox (bu bileşen ile ilgili detayları arayüzler bölümünde bulabilirsiniz) oluşturduk. F6 tuşuna basalım ve uygumamızı çalıştıralım bakalım ne olacak. Launch seçeneğini seçiyorum ancak yine bir tepki yok ? Çok garip oysaki bir TextBox oluşturmuştuk. Bunun nedeni ne olabilir ?
Bunu şöyle açıklayabiliriz midletler bileşenleri ekranlara (Display) atarlar yani bir bileşeni göstermemiz gerekiyorsa oluşturduktan sonra onu ekrana set etmeliyiz. Peki bunu nasıl yapacağız.
/* * To change this template, choose Tools | Templates* and open the template in the editor. */ package com.melih.demo; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * @author Melih */ public class DemoMIDlet extends MIDlet { public void startApp() { TextBox textAlani= new TextBox("Yazı Alanı","içerik alanı",20,TextField.ANY); Display ekran = Display.getDisplay(this); ekran.setCurrent(textAlani); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
Bakın burada öncelikle Display adında bir nesne oluşturum Display.getDisplay(this); metodu ile bu midlete ait Display i ekran isimli değişkene atadım. Artık ekran bizim şimdi ekran üzerinde çeşitli işlemler yapabiliriz. ekran.setCurrent(textAlani); ile ekrana textAlani isimli bileşeni atıyoruz. Bu sayede artık o bileşen ekranda görünmeye başlayacak.
Şimdi uygulamamızı test etmek için çalıştıralım F6 ya basıyoruz ve Launch seçeneğimizi seçip midletimizi çalıştıralım. Evet sonunda çalıştı artık ilk midletimizi yazmış olduk. Dikkat ettiyseniz “Yazı Alanı” başlık yani title alanı olarak görülüyor “Burası içerik alanı” yazan yer ise TextBox içeriğini gösteriyor.
Görüldüğü gibi midlet yazmak o kadar da zor değilmiş basit bir Java veya en azından programlama bilgisi olan bir insan J2ME ile çok olay uygulama geliştirebilir.