30 December 2008

Bentuk-Bentuk 2D dalam J2ME (Low Level)

Kode-kode berikut ditaruh pada class yang ber-extends Canvas.

1. Bentuk Kotak

public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,255,0);
g.drawRect(55,55,60,60); //membuat garis tepi kotak
g.setColor(255,0,0);
g.fillRect(56,56,59,59);
}

2. Bentuk Lingkaran
public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(255,0,0);
g.fillArc(55,55,100,100,0,360);
}


3. Bentuk Segitiga
public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(255,0,0);
g.fillTriangle(30,30,30,100,100,100);
}

4. Bentuk Setengah Lingkaran

public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,255,0);
g.drawRoundRect(20,20,20,40,40,40);
g.setColor(255,0,0);
g.fillRoundRect(20,20,20,40,40,40);
}

5. Bentuk Kerucut
public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.drawArc(60,60,60,150,60,60);
g.setColor(255,0,0);
g.fillArc(60,60,60,150,60,60);
}


Baca selengkapnya...

Bekerja dengan Canvas dalam pemrograman J2ME (Low Level)

Objek Display, selain dapat untuk menampilkan Form, Alert, TextField, TextBox, dan lain-lain (High Level). Juga dapat digunakan untuk menampilkan Canvas (Low Level).

Perbedaan antara High Level dengan Low Level :

- Dari segi coding (pengkodean) program, kita lebih mudah untuk menggunakan High Level dari pada Low Level. Dalam High Level. Kita tinggal "menggunakan" objek-objek yang sudah ada, seperti Form, TextField, dan sebagainya. Sedangkan di dalam Low Level, kita harus membuat sendiri objek-objek tersebut.

- Dari segi implementasi, Low Level lebih "pas" pada saat diimplementasikan di HandPhone. Kalau kita menggunakan High level, hasil yang ditampilkan di HandPhone terkadang tidak sama dengan yang ditampilkan di emulator.

☼ Contoh program J2ME dengan Canvas :
Pemrograman J2ME dengan Canvas membutuhkan minimal 1 buah class yang ber-extends MIDlet, karena program J2ME pertama kali berjalan membutuhkan sebuah class yang ber-extends MIDlet, jika kita menggunakan Canvas, maka class kita akan ber-extends Canvas. Oleh karena itu kita juga membutuhkan 1 class lagi yang ber-extends MIDlet, yang mana class yang ber-extends Cnavas tersebut, akan dipanggil di class yang ber-extends MIDlet.
Langkah-langkah :
1. Buat File dengan nama mycanvas.java (Class yang ber-extends Canvas)
//nama File : mycanvas
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
//Meng-import semua library yang dibutuhkan
public class mycanvas extends Canvas {
public void paint(Graphics g)
{
 g.setColor(0x11555);
 g.fillRect(0,0,getWidth(),getHeight());
g.setColor(255,255,255); //RGB 255,255,255 akan menghasilkan warna putih
g.drawString("==========",10,10,0); //menampilkan tulisan di koordinat x=10, y=10
g.setColor(255,0,0);
g.drawString("Ini latihan Canvas Chandra Harianto",10,23,0); // menampilkan tulisan di koordinat x=10, y=23
g.setColor(0x89213); //warna hijau muda
g.drawString("Asyik yach belajar J2ME Canvas",10,49,0); // menampilkan tulisan di koordinat x=10, y=49
g.setColor(255,255,255); //RGB 255,255,255 akan menghasilkan warna putih
g.drawString("==========",10,62,0); //menampilkan tulisan di koordinat x=10, y=62
}
}

2. Buat File dengan nama pcanvas.java (Class yang ber-extends MIDlet)
//nama File : pcanvas
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
//Meng-import semua library yang dibutuhkan
public class pcanvas extends Canvas {
public void startApp() {
Display display=Display.getDisplay();
Canvas tampil=new myanvas(); //memanggil class mycanvas yang ber-extends Canvas
display.setCurrent(tampil);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
}


Baca selengkapnya...

Bekerja dengan Objek List dalam pemrograman J2ME (High Level)

Objek List dalam J2ME dibagi menjadi 3 jenis, yaitu :

  • List berupa List Box : List.IMPLICIT
  • List berupa Check Box : List.MULTIPLE
  • List berupa Radio Button : List.EXCLUSIVE

Parameter List : List(String Title, Tipe List)

Deklarasi :
List pilihan= new List("List Box", List.IMPLICIT);
pilihan.append("Pilihan 1",null);
pilihan.append("Pilihan 2",null);
Membaca nilai List :
nama_objek.isSelected(index); -> return : Boolean
contoh : pilihan.isSelected(0); //pilihan dalam list adalah berupa array yang dimulai dari index 0.
☼ Contoh Program dengan menggunakan Objek List :
//Nama File : List1.java (sesuai dengan MIDlet Class Name //yang kita isikan sebelumnya.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
//Meng-import semua library yang dibutuhkan
public class FormLogin extends MIDlet implements CommandListener {
Display display;
Command cmdExit;
Command cmdOk;
List pilihan;

public void startApp() {
cmdExit=new Command("EXII",Command.SCREEN,1);
//membuat tombol/command exit
cmdOk=new Command("OK",Command.OK,0);
//membuat tombol/command exit
pilihan=new List("Daftar Pilihan",List.MULTIPLE);
pilihan.append("VIP Class",null);
pilihan.append("Bisnis Class",null);
pilihan.append("Ekonomi Class",null);
pilihan.addCommand(cmdExit);
pilihan.addCommand(cmdOk);
pilihan.setCommandListener(this);
display=Display.getDisplay(this);
display.setCurrent(pilihan);
}
public void pauseApp() { }
public void destroyApp { }

public void commandAction (Command c, Displayable d)
{
Alert x=new Alert("Pesan");
if(c= =cmdOk) //jika tombol ok dipilih
{
//maka akan dilakukan pengecekan terhadap pilihan yang //dipilih oleh user
if(pilihan.isSelected(0) && pilihan.isSelected(1) && pilihan.isSelected(2))
x.setString("Anda memilih VIP Class, Bisnis Class, dan Ekonomi Class");
else if(pilihan.isSelected(0) && pilihan.isSelected(2))
x.setString("Anda memilih VIP Class dan Ekonomi Class");
else if(pilihan.isSelected(0) && pilihan.isSelected(1))
x.setString("Anda memilih VIP Class dan Bisnis Class");
else if(pilihan.isSelected(1) && pilihan.isSelected(2))
x.setString("Anda memilih Bisnis Class dan Ekonomi Class");
else if(pilihan.isSelected(0))
x.setString("Anda memilih VIP Class");
else if(pilihan.isSelected(1))
x.setString("Anda memilih Bisnis Class");
else if(pilihan.isSelected(2))
x.setString("Anda memilih Ekonomi Class");
display.setCurrent(x);
}
else if(c= =cmdExit) //Jika yang dipilih tombol Exit
{
destroyApp(false);
notifyDestroyed();
}
}
}


Baca selengkapnya...

Bekerja dengan Objek Form dalam pemrograman J2ME (High Level)

-> Parameter : Form(String title)

-> Deklarasi : Form frm;

-> Create Objek : frm=new Form("Biodata");

Untuk menambahkan objek Command (sebuah tombol) ke dalam Form :

  • Command cmdExit;
  • Create Objek : cmdExit=new Command("EXIT",Command.EXIT,1);

Untuk menambahkan objeknya kita membutuhkan sebuah objek Display.

Untuk menampilkannnya ke dalam objek Form :

frm.addCommand(cmdExit);

Display display;

display.getDisplay(this);

display.setCurrent(frm);

☼ Contoh Program Login dengan menggunakan Objek Form :

//Nama File : FormLogin.java (sesuai dengan MIDlet Class Name //yang kita isikan sebelumnya.

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

//Meng-import semua library yang dibutuhkan

public class FormLogin extends MIDlet implements CommandListener {

//nama Class= FormLogin, harus sama dengan nama File (Case Sensitive)

Display display;

Command cmdExit;

Command cmdOk;

TextField txtNama;

TextField txtPassword;

Form frm;

public void startApp()

{

frm=new Form("Login"); //membuat objek Form //yang diwakili oleh variable frm.

cmdExit=new Command("EXII",Command.SCREEN,1);

//membuat tombol/command exit

cmdOk=new Command("OK",Command.OK,0);

//membuat tombol/command exit

txtNama=new TextField("Nama ","",10,0);

//membuat objek txtNama yang hanya bisa diinputkan dengan 10 karakter

txtPassword=new TextField("Password ","",10,TextField.PASSWORD);

//membuat objek txtPassword yang hanya bisa diinputkan dengan 10 karakter, dengan diwakili oleh simbol password (*).

frm.addCommand(cmdExit);

frm.addCommand(cmdOk);

frm.append(txtNama);

frm.append(txtPassword);

display=Display.getDisplay(this); //mensetting display

frm.setCommandListener(this); //agar tombol dapat menjalankan event

display.setCurrent(frm);

}

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void commandAction(Command c, Dsiplayable s)

{

if(c= =cmdExit)//jika tombol exit dipilih

{

destroyApp(false);

notifyDestroyed();

}

else if(c= =cmdOk)//jika tombol ok dipilih

{

Alert x=new Alert("Pesan"); //untuk membuat objek pesan

if(txtNama.getString().equals("Chandra") && txtPassword.getString().equals("Harianto"))

{

//dicek apakah txtNama berisi = Chandra dan txtPassword berisi=Harianto, //jika ya maka akan dilakukan perintah berikut

x.setString("Selamat Datang Chandra Harianto");

}

else

{

x.setString("Maaf, user name atau password anda salah");

}

display.setCurrent(x);

}

}

}


Baca selengkapnya...

Aplikasi HelloWorld dalam Pemrograman J2ME (High Level)

Dimisalkan, anda sudah menginstall semua software-software yang dibutuhkan dalam pemrograman J2ME. Dan dimisalkan juga anda menggunakan software J2ME WTK, dengan menggunakan teks editornya Crimson Editor.

Langkah-langkah yang kita lakukan dalam membuat aplikasi HelloWorld tersebut yaitu :

  1. Klik Start -> All Programs -> J2ME WTK -> KToolBar (akan terbuka Software J2ME WTK (KToolBar) )
  2. Klik New Project, isikan Project Name : Latihan, dan juga isikan MIDlet Class Name : HelloWorld.
  3. Kemudian akan muncul sebuah dialog Setting for Project "Latihan". Pada menu ini kita dapat menentukan CLDC yang akan kita gunakan. Dan juga banyak lagi. Untuk tahap awal lebih baik kita menggunakan setting standard saja. Langsung klik OK.
  4. Buka Teks Editor, dan ketikan kode berikut :

    //Nama File : HelloWorld.java (sesuai dengan MIDlet Class Name yang kita isikan sebelumnya).

    import javax.microedition.lcdui.*;

    import javax.microedition.midlet.*;

    //Meng-import semua library yang dibutuhkan

    public class HelloWorld extends MIDlet implements CommandListener {

    //nama Class= HelloWorld, harus sama dengan nama File (Case Sensitive)

    private Display display; //menyiapkan objek display

    private Command cmdExit; //menyiapkan sebuah variable cmdExit //untuk menunjuk kepada sebuah tombol/command exit

    public void startApp() {

    display=Display.getDisplay(this); //mensetting display

    cmdExit=new Command("EXII",Command.SCREEN,1);// membuat tombol/command exit

    TextBox teks1=new TextBox("Hallo","Hello World…",50,0);

    //membuat objek TexttBox dengan diwakili oleh variable class teks

    teks1.addCommand(cmdExit);

    teks1.setCommandListener(this);

    display.setCurrent(teks1);

}

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void commandAction(Command c, Displayable d)

{

if(c= =cmdExit)//jika tombol exit ditekan, maka akan //memberhentikan aplikasi

{

destroyApp(false);

notifyDestroyed();

}

}}

Simpan file tersebut di C:/WTK_HOME/apps/Latihan/src, dengan nama HelloWorld.java

Struktur direktori yang dibuat oleh J2ME WTK yaitu :

  • bin (berisi file Java Archive .jar dan .jad)
  • lib (untuk menyimpan library-library yang dibutuhkan oleh program kita).
  • res (untuk menyimpan file-file pendukung seperti audio/gambar yang dibutuhkan oleh program kita).
  • src (untuk menyimpan berkas program Java kita (dengan ekstensi .java))
  • tmp (berisi file-file temporary).
  1. Pada KToolBar klik Build (meng-compile kode dengan ekstensi .java), kemudian Run (menjalankan bytecode (*.class) dengan menggunakan JVM (Java Virtual Machine)).
  2. Sampai disini seharusnya kita sudah berhasil memunculkan emulatornya. (yang menandakan bahwa program sudah berhasil untuk dijalankan).

Nb : Perlu diperhatikan bahwa dalam pemrograman J2ME, class pertama yang dipanggil yaitu class yang ber-extends MIDlet (turunan/diwariskan/inheritance MIDlet). Dimana hal ini berbeda dengan pemrograman Java Fundamental pada umumnya (seperti Java Swing), yang memanggil class pertama yang mengandung void main(String[] args).

Dalam J2ME (MIDlet), minimal harus terdapat 3 fungsi void (fungsi yang tidak mengembalikan nilai) utama, yaitu startApp(), pauseApp(), destroyApp(Boolean unconditional). Bila salah satu fungsi void tersebut tidak ada, maka program tidak akan bisa dikompilasi (di-compile).

Fungsi tersebut harus ada dalam program MIDlet kita. Meskipun di dalam fungsi void tersebut, kita tidak menuliskan kode apa-apa.


Baca selengkapnya...