İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

Midlet'lerin Grafik Arayüzü (LCDUI-Limited Connected User Interface)

MIDP1.0'da arayüz class'ları javax.microedition.lcdui paketinde bulunur. Bu paket AWT ve Swing'ten farklıdır. İki tür bileşen vardır. Yüksek ve düşük düzeyli bileşenler. Düşük düzey'li bileşen Canvas class'ıdır. Canvas class'ının görünüşünü programcı belirler. Yüksek düzeyli bileşenlerin görünümü ise tamamen cep telefonuna aittir. Örneğin TextBox'un ekranda nasıl gözükeceğini cep telefonuna göre değişir.

Yüksek düzeyli bileşenlerin ana class'ı Screen'dir. Alert,Form,List,TextBox bileşenleri Screen class'ını extend etmişlerdir. Ekranda bir bileşenin gözükmesi için Displayable interface'ni implement etmiş olması gerekir. Screen ve Canvas class'ı Displayable interface'ni implement etmiştir.

Midlet'lerde ekranda gözüken ve giriş yapılan bölge'ye bir bileşen koymak için Display class'ı kullanılır

Display.getDisplay(this)

ile ekranda gözüken bölge elde edilir. Herhangi bir bileşen (Screen[Form,Alert,List veya TextBox] veya Canvas)

Display.getDisplay(this).setCurrent(nesne)

ile gözükür hale getirilir.

Örneğin bir TextBox aşağıdaki gibi gösterilebilir.

TextBox box=new TextBox("hello","Hello MIDlet",100,TextField.ANY);
Display.getDisplay(this).setCurrent(box);

Canvas

Canvas tüm ekranı çizmenizi sağlayan bir bileşendir. Genellikle oyunlar için Canvas kullanılır. Canvas ile ekranın tüm bölgesi sizin kontrolünüzdedir. Canvas abstract bir class'dır. Canvas'ı kullanmanız için onu extend etmelisiniz. Canvas'ın

paint(Graphics g)

method'u abstract'tır. Bu method'un içini doldurmalısınız. Verilen g değişkeni ile ekrana istediğiniz şekilleri çizebilirsiniz.

TestCanvas class'ını yarattık (Canvas'ı extend ettik ve paint methodunu overide ettik).

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.midlet.*;
  2 import javax.microedition.lcdui.*;
  3 public class CanvasTest extends MIDlet{
  4     public void startApp(){
  5         TestCanvas canvas=new TestCanvas();
  6         Display.getDisplay(this).setCurrent(canvas);
  7     }
  8     public void pauseApp(){}
  9     public void destroyApp(boolean unconditional){}
 10     public class TestCanvas extends Canvas{
 11         public void paint(Graphics g){
 12             g.setColor(255,255,255);
 13             g.fillRect(0,0,getWidth(),getHeight());
 14             g.setColor(0,0,0);
 15             g.drawRect(10,10,50,50);
 16         }
 17     }
 18 }

public void startApp(){
	TestCanvas canvas=new TestCanvas();
	Display.getDisplay(this).setCurrent(canvas);
}

Midlet başlatıldığında startApp() methodu çağrılır. Biz TestCanvas nesnesi yaratıyor ve

Display.getDisplay(this).setCurrent(canvas);

diyerek bu canvas'ın gözükmesini sağlıyoruz. TestCanvas'taki önce rengi beyaz yapıp tüm ekranı beyaza boyuyoruz. (Ekranı temizledik) sonra rengi siyah yapıp dikdörtgeni çiziyoruz.

Canvas ile image gösterebilirsiniz. MIDP1.0 png resimlerini desteklemektedir. Resim dosyası jar'da olmak zorundadır. Aşağıda bir resmi ekranda gösteriyoruz.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.midlet.*;
  2 import javax.microedition.lcdui.*;
  3 public class ImageTest extends MIDlet {
  4   public void startApp() {
  5     try{
  6       Image image = Image.createImage("/test.png");
  7       TestCanvas canvas = new TestCanvas(image);
  8       Display.getDisplay(this).setCurrent(canvas);
  9     }
 10     catch(Exception e){
 11       e.printStackTrace();
 12     }
 13   }
 14   public void pauseApp() {}
 15   public void destroyApp(boolean unconditional) {}
 16   public class TestCanvas extends Canvas {
 17     Image image;
 18     public TestCanvas(Image image){
 19       this.image=image;
 20     }
 21     public void paint(Graphics g) {
 22       g.setColor(255, 255, 255);
 23       g.fillRect(0, 0, getWidth(), getHeight());
 24       g.drawImage(image,10,10,Graphics.TOP|Graphics.LEFT);
 25     }
 26   }
 27 }

Image.createImage("/test.png"); 

ile jar'da bulunan image yüklenmektedir.

g.drawImage(image,10,10,Graphics.TOP|Graphics.LEFT);

ile de resim canvas'ta 10,10 noktasına çizilmektedir.

Command

Displayable class'ının addCommand ve setCommandListener method'ları bulunmaktadır. Canvas,Form,TextBox,Alert,List class'larıda Displayable'ı extend ettiği için addCommand ve setCommandListener method'larını bulundurmaktadır. addCommand ile bir komut eklenir. setCommandListener ile bu eklenen komutları kimin dinleyeceği belirlenir. Bir Command aşağıdaki gibi yaratılabilir.

Command okCommand = new Command("OK", Command.OK, 1);

İlk parametre gözükecek yazı, ikinci parametre komutun tipi, üçüncü parametre öncelik. OK'den başka BACK,CANCEL,EXIT,HELP,ITEM,OK,SCREEN,STOP tipleri'de bulunmaktadır. Hangi komutun seçildiği

public void commandAction(Command c, Displayable d) {
    if (c==okCommand) {
	//okCommand seçildi
    }else if(c==cancelCommand){
	//cancelCommand seçildi
    }
}

şeklinde anlaşılabilir.

Yüksek Düzeyli Bileşenler

En ana class Screen class'dır. Bu class'ı Form,Alert,List veya TextBox'ı extend eder.

Display.getDisplay(this).setCurrent(bilesen);

şeklinde Form,Alert,List veya TextBox nesneleri ekranda gözükür hale gelebilir.

TextBox

TextBox ekranda kullanıcıdan yazı girmek için yapılan bir yazı alanıdır. En fazla kaç karakter girlebilecği belirlenebilir. Ne tür bir giriş yapılacağı belirlenebilir. Örneğin sadece numara girilmesi sağlanabilir. Aşağıdaki tipleri destekler

TextBox box=new TextBox("Başlik","Hello World",100,TextField.NUMERIC);
Display.getDisplay(this).setCurrent(box);

ile sadece numara girilmesini sağlanabilir.

Alert

Alert class'ı ise kullanıcıya bir bilgi vermek için kullanılır ve ok düğmesi tıklandığında kapanır. Bir alert aşağıdaki gibi gösterilebilir.

Alert alert=new Alert("Alert","Bu bir alert mesaji",null,null);
alert.setTimeout(Alert.FOREVER);
Display.getDisplay(this).setCurrent(alert);

setTimeout methodu ile belirli bir milisaniye gözükmesi de sağlanabilir. Alert'in aşağıdaki tipleri destekler

Aynı zamanda bir resim de gösterebilirsiniz.

Alert alert=new Alert("Alert","Bu bir alert mesaji",image1,AlertType.ALARM);

Yukarıda image1 resmini kullandık ve alarm alert'i göstermiş olduk.

AlertType.WARNING.playSound(Display.getDisplay(this)); 

şeklinde sadece ses'te çalınabilmektedir.

List

Liste ise birden çok elamanı listeler ve elamanlardan biri seçildiğinde size bildirir. Aşağıdaki örnekte bir liste yaratıyoruz. Liste seçildiği zaman liste elamanını bir alert açip gösteriyoruz.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.midlet.*;
  2 import javax.microedition.lcdui.*;
  3 public class TestListMidlet extends MIDlet implements CommandListener{
  4   List list;
  5   public void startApp() {
  6     list = new List("Test List", List.IMPLICIT);
  7     list.append("A", null);
  8     list.append("B", null);
  9     list.append("C", null);
 10     list.setCommandListener(this);
 11     Display.getDisplay(this).setCurrent(list);
 12   }
 13   public void pauseApp() {}
 14   public void destroyApp(boolean unconditional) {}
 15   public void commandAction(Command c, Displayable d){
 16     if (c == List.SELECT_COMMAND) {
 17       int index = list.getSelectedIndex();
 18       String choice = list.getString(index);
 19       Alert alert = new Alert("Alert", choice, null, null);
 20       alert.setTimeout(Alert.FOREVER);
 21       Display.getDisplay(this).setCurrent(alert);
 22     }
 23   }
 24 }

list = new List("Test List", List.IMPLICIT);
list.append("A", null);
list.append("B", null);
list.append("C", null);

ile liste yaratıp içine üç eleman ekliyoruz.

list.setCommandListener(this);

ile liste elamanı seçimini dinlemek istediğimizi bildiriyoruz. TestListMidlet CommandListener interface'ni implement ettiği için commandAction method'u çağrılmaktadır.

int index = list.getSelectedIndex();
String choice = list.getString(index);

ile seçilen eleman bulunmakta.

Alert alert = new Alert("Alert", choice, null, null);
alert.setTimeout(Alert.FOREVER);
Display.getDisplay(this).setCurrent(alert);

ile Alert'i gösteriyoruz.

Form

Form içine onay kutusu,seçenek kutusu, yazı alanı vs.. eklemek için kullanılır. Örneğin bir text alanı ve bir seçenek kutusu olan bir form yapalım. Bir ok komutu ekleyelim ve tıklandığında text alanındaki yazıyı ve seçilmis elemanı alert'te gösterelim.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.midlet.*;
  2 import javax.microedition.lcdui.*;
  3 public class TestFormMidlet extends MIDlet implements CommandListener {
  4   Command okCommand = new Command("OK", Command.OK, 1);
  5   TextField field;
  6   ChoiceGroup group;
  7   public void startApp() {
  8     Form form = new Form("Test Form");
  9     field=new TextField("Test", "", 1000, TextField.ANY);
 10     group=new ChoiceGroup("Test Grup", ChoiceGroup.EXCLUSIVE);
 11     group.append("A",null);
 12     group.append("B",null);
 13     group.append("C",null);
 14     form.append(field);
 15     form.append(group);
 16     form.addCommand(okCommand);
 17     form.setCommandListener(this);
 18     Display.getDisplay(this).setCurrent(form);
 19   }
 20   public void pauseApp(){}
 21   public void destroyApp(boolean unconditional){}
 22   public void commandAction(Command c, Displayable d) {
 23     if (c==okCommand) {
 24       String text = field.getString();
 25       int index = group.getSelectedIndex();
 26       String selected = group.getString(index);
 27       Alert alert = new Alert("Alert", text + ":" + selected, null, null);
 28       alert.setTimeout(Alert.FOREVER);
 29       Display.getDisplay(this).setCurrent(alert);
 30     }
 31   }
 32 }

Bir form yaratılıp içine bir seçenek listesi ve bir yazı alanı ve bir de OK komutu eklenmektedir. OK komutu seçildiğinde text alanındaki yazı ve seçilen değer alert ile gösterilmektedir.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır