Bu yazımda J2ME uygulamalarının kullanıcı tarafında sunulmasını sağlayan kullanıcı arayüz bileşenlerinden kısaca bahsedip basit bir uygulama yapacağım.
J2ME de arayüz bileşenleri ikiye ayrılır.Bunlar düşük seviye ve yüksek seviye bileşenlerdir.Düşük seviye bileşenler çalıştığı sisteme bağlı olmayıp bütün cihazlarda aynı görünüme sahiptirler.Bu bileşenleri Canvas sınıfı oluşturur.Canvaslar grafik çizmek için kullanılırlar.Yüksek seviye bileşenler ise çalıştıkları sisteme bağlıdırlar.Yani çalıştıkları cihazın kütüphanelerini kullanırlar.Dolayısıyla görünümleri cihazdan cihaza farklılık gösterebilir.Bu bileşenler ise Screen sınıfından türemişlerdir.

Burada bir şeyi belirtmek gerekiyor ki yukarıda gördüğümüz ,Screen sınıfından türeyen Alert,List,Textbox gibi bileşenlerden ekranda bir seferde yalnızca bir tanesi gösterilebiliyor.Ekranda birden fazla bileşen göstermek istiyorsak Form sınıfını kullanmamız gerekiyor ve form sınıfından türeyen Choice Group,DateField gibi bileşenleri forma ekleyip formumuzu da ekrana eklememiz gerekiyor.Bir diğer önemli nokta ise dokunmatik ekrana sahip ceptelefonları dışında,ceptelefonlarında butonların kullanılmayışıdır.Bunun yerine Command kullanırız.Şimdi isterseniz bu bileşenleri kullandığımız basit bir uygulama yapalım:
package hello;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloMIDlet extends MIDlet implements CommandListener {
private boolean midletPaused = false;
Display ekran;
Command karsılastir;
TextField cumle;
TextField cumle2;
private Command exitCommand;
private Form form;
private StringItem stringItem;
public HelloMIDlet() {
form=new Form("Formumuz");
cumle=new TextField("Cümle:","bu cümleyi yaz",40,TextField.ANY);
cumle2=new TextField("Senin Cümlen:",null,40,TextField.ANY);
karsılastir=new Command("Karsılastir",Command.OK,1);
exitCommand=new Command("Çıkış",Command.EXIT,2);
form.append(cumle);
form.append(cumle2);
ekran=Display.getDisplay(this);
form.addCommand(karsılastir);
form.addCommand(exitCommand);
form.setCommandListener(this);
}
private void initialize() {
// write pre-initialize user code here
// write post-initialize user code here
}
public void startMIDlet() {
// write pre-action user code here
switchDisplayable(null, getForm());
// write post-action user code here
}
public void resumeMIDlet() {
// write pre-action user code here
// write post-action user code here
}
public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
// write pre-switch user code here
Display display = getDisplay();
if (alert == null) {
display.setCurrent(nextDisplayable);
} else {
display.setCurrent(alert, nextDisplayable);
}
// write post-switch user code here
}
public void commandAction(Command command, Displayable displayable) {
if (displayable == form) {
if (command == exitCommand) {
exitMIDlet();
// write post-action user code here
}
}
if(command==karsılastir)
{
int snc=cumle2.getString().compareTo(cumle.getString());
if(snc!=0)
{
Alert uyarı=new Alert("HATA!!!","yanlıs giris",null,AlertType.ERROR);
ekran.setCurrent(uyarı);
}
else
{
Alert uyarı=new Alert("TEBRİKLER","dogru giris",null,AlertType.CONFIRMATION);
ekran.setCurrent(uyarı);
}
}
}
public Command getExitCommand() {
if (exitCommand == null) {
// write pre-init user code here
exitCommand = new Command("Exit", Command.EXIT, 0);
// write post-init user code here
}
return exitCommand;
}
public Form getForm() {
if (form == null) {
// write pre-init user code here
form = new Form("Welcome", new Item[] { getStringItem() });
form.addCommand(getExitCommand());
form.setCommandListener(this);
// write post-init user code here
}
return form;
}
public StringItem getStringItem() {
if (stringItem == null) {
// write pre-init user code here
stringItem = new StringItem("Hello", "Hello, World!");
// write post-init user code here
}
return stringItem;
}
public Display getDisplay () {
return Display.getDisplay(this);
}
/**
* Exits MIDlet.
*/
public void exitMIDlet() {
switchDisplayable (null, null);
destroyApp(true);
notifyDestroyed();
}
public void startApp() {
if (midletPaused) {
resumeMIDlet ();
} else {
initialize ();
startMIDlet ();
ekran.setCurrent(form);
}
midletPaused = false;
}
public void pauseApp() {
midletPaused = true;
}
public void destroyApp(boolean unconditional) {
}
}
Bu kadar koda bakıpta çok bişey yaptığını düşünmeyin:) Yaptığı şey şu: 1.textFielddeki cümle ile 2. textFielddeki yani kullanıcının girdiği cümleyi karşılaştırıp doğru yada yanlış şeklinde geri bildirimde bulunuyor.
Koda baktığımızda bizim için önemli olan kısımlar kalın harflerle yazılmış kısımlardır.Birinci kısım ,HelloMIDlet metodu Constructor metodumuz.Burada bileşenleri oluşturup forma ekledik formu da ekrana ekledık.İkinci kısımda ise yani commandAction metodumuzda Commandlarımızdan biri uyarıldığıı takdirde yapılacak işlemleri belirttik.