23
J2ME(1) A. TUJUAN 1. Mengetahui teknologi J2ME. 2. Memahami siklus hidup sebuah midlet 3. Mampu menggunakan program J2ME pada emulator. 4. Mampu membuat List dan Interaksi User. 5. Mampu membuat Form dan TextField. 6. Mampu mengambar di Kanvas. B. DASAR TEORI Java 2 Micro Edition Java 2 Micro Edition merupakan subset dari J2SE yang ditujukan untuk implementasi pada peralatan embeded sistem dan handled yang tidak mampu mendukung secara penuh implementasi menggunakan J2SE. Embeded sistem adalah produk-produk dengan komputer kecil berada didalamnya, namun aplikasi yang bisa dimanfaatkan dari peralatan tersebut sangatlah spesifik. J2ME menyediakan lingkungan runtime yang optimal untuk embeded system, seperti: pager, handphone, PDA, 3G handset, webphone, iTV, sistem navigasi mobil, dan sistem keamanan gedung. J2ME digunakan pada perangkat yang memiliki memory kecil. Seperti aplikasi Java pada umumnya yang menggunakan JVM, dalam J2ME digunakan pula Java Virtual Machine yang disebut K virtual machine. K virtual machine adalah virtual machine yang sangat kecil dalam kebutuhan memorinya. Huruf K disi ni adalah singkatan dari kilobyte. K virtual machine ini berjalan pada memori 128 sampai dengan 512 kilobyte. Proses Loading pada Aplikasi J2ME Ketika sebuah aplikasi telah selesai dibuat, diperlukan sebuah mekanisme khusus yang memugkinkan sebuah

J2ME1

Embed Size (px)

Citation preview

Page 1: J2ME1

J2ME(1)

A. TUJUAN1. Mengetahui teknologi J2ME.2. Memahami siklus hidup sebuah midlet3. Mampu menggunakan program J2ME pada emulator.4. Mampu membuat List dan Interaksi User.5. Mampu membuat Form dan TextField.6. Mampu mengambar di Kanvas.

B. DASAR TEORI

Java 2 Micro EditionJava 2 Micro Edition merupakan subset dari J2SE yang ditujukan untuk implementasi pada peralatan embeded sistem dan handled yang tidak mampu mendukung secara penuh implementasi menggunakan J2SE. Embeded sistem adalah produk-produk dengan komputer kecil berada didalamnya, namun aplikasi yang bisa dimanfaatkan dari peralatan tersebut sangatlah spesifik. J2ME menyediakan lingkungan runtime yang optimal untuk embeded system, seperti: pager, handphone, PDA, 3G handset, webphone, iTV, sistem navigasi mobil, dan sistem keamanan gedung. J2ME digunakan pada perangkat yang memiliki memory kecil.

Seperti aplikasi Java pada umumnya yang menggunakan JVM, dalam J2ME digunakan pula Java Virtual Machine yang disebut K virtual machine. K virtual machine adalah virtual machine yang sangat kecil dalam kebutuhan memorinya. Huruf K disini adalah singkatan dari kilobyte. K virtual machine ini berjalan pada memori 128 sampai dengan 512 kilobyte.

Proses Loading pada Aplikasi J2MEKetika sebuah aplikasi telah selesai dibuat, diperlukan sebuah mekanisme khusus yang memugkinkan sebuah aplikasi dapat disimpan kedalam sebuah perangkat komunikasi bergerak. Umumnya, digunakan istilah yang dinamakan Application Management Software (AMS) untuk menerangkan mekanisme tersebut. Skenario proses download adalah sebagai berikut:

Seorang pelanggan mengakses sebuah halaman web atau WAP menggunakan perangkat komunikasi bergeraknya.

Selanjutnya pelanggan tertarik terhadap suatu aplikasi dan memilihnya, secara otimatis file descriptor aplikasi tersebut akan ter-download melalu jaringan komunikasi ke handset nya. Pada umumnya ukuran file ini relatif kecil sehingga proses download sangat cepat.

File descriptor ini memberitahukan pengguna beberapa hal mendasar tentang aplikasi yang baru saja di-download, misalnya versi, ukuran file dan

Page 2: J2ME1

sebagainya. Sehingga bila space memori handset tidak cukup atau file tersebut sudah ada maka pengguna bisa membatalkannya.

Jika tidak ada permasalahan dengan kondisi handset, AMS akan mulai mendownload aplikasi dan menyimpannya, untuk kemudian muncul pada pilihan aplikasi.

Dasar-dasar MidletMidlet adalah aplikasi yang dibuat menggunakan Java 2 Micro Edition

dengan profile Mobile Information Device Profile (MIDP). MIDP dikhususkan untuk digunakan pada handset dengan kemampuan CPU, memori, keyboard, dan layar yang terbatas. Secara umum terdapat beberapa hal penting dalam membuat sebuah aplikasi MIDLET, yaitu menyangkut life cycle, user interface, command handling, deployment dan Application Management.

Life CycleLife cycle sebuah midlet ditangani oleh Application Management

Software (AMS). AMS ini adalah sebuah lingkungan tempat siklus dari sebuah midlet mampu diciptakan, dijalankan, dihentikan, maupun dihilangkan. AMS sering pula dinamakan dengan Java Application Manager (JAM).

Midlet memiliki beberapa state, yaitu pause, active, destroy. Ketika masing-masing state dipanggil, beberapa method standar yang bersesuaian dipanggil. Method-method ini merupakan bawaan dari J2ME. Berikut ini adalah life cycle dari sebuah MIDP:

Penjelasan: Ketika midlet pertama kali diciptakan dan diinisialisasi, midlet akan berada

dalam state “Pause”. Apabila terjadi kesalahan selama konstruksi midlet, midlet akan berpindah ke

state “Destroy”, dan midlet batal diciptakan dengan jalan memanggil fungsi standar destroyApp().

Selanjutnya, ketika midlet dijalankan, midlet akan berada pada state “Active”, dalam hal ini fungsi standar yang dipanggil adalah startApp().

Akan tetapi, jika ditengah jalan midlet dihentikan sementara, midlet akan berada dalam state “Pause” dengan jalan memanggil fungsi standar

Page 3: J2ME1

pauseApp(). Pada state ini diperlukan proses cleanup terhadap garbage collector yang dihasilkan.User InterfaceUser Interface dari MIDP terdiri atas API-API yang high level dan low level. Low level API berbasis pada class Canvas. High level API berbasis pada Screen. Contoh high level adalah Alert, Form, List, TextBox. Class diagram dari User Interface adalah sebagai berikut.Midlet Suite dan Application DescriptorSebelum di upload ke ponsel applikasi harus dikemas dengan ektensi *.jar. Selain itu dikenal juga file *.jad yaitu application descriptor yang berguna untuk mendeskripsikan isi file jar.Membuat AplikasiTerdapat beberapa tool untuk membuat aplikasi J2ME pada handphone. Pada dasarnya hanya diperlukan tiga file saja yaitu J2SE, J2ME Wireless Toolkit (J2MEWTK) dan sebuah text editor. Persiapan membuat program J2ME. Ikuti langkah-langkah berikut:Instal J2SDK

1. Instal J2ME Mulai membuat aplikasi dengan profile MIDP:Start – Program – J2ME Wireless Tool Kit 1.0.4_01 – Ktoolbar. Akan didapatkan tampilan sebagai berikut:Membuat project. Pilih menu File – New Project. Isi nama project dan nama class dari midlet.

2. J2MEWTK secara otomatis menyimpan semua project ke dalam subdirektori apps. Nama direktori sama dengan nama project yang dibuat. Bila J2MEWTK diinstal di c:\ J2MEWTK, maka project tadi akan isimpan di c:\J2MEWTK\apps\MenuDanList. Folder Bin digunakan untuk menyimpan hasil kompilasi midlet berupa file .jar dan descriptor midlet yang berupa file .jad. Folder Lib digunakan untuk menyimpan file jar tambahan yang ingin anda sertakan dalam project. Folder Res digunakan untuk menyimpan file sumber seperti gambar atau file teks. Sedang folder Src digunakan untuk menyimpan kode sumber yang harus dikompilasi.Lakukan import pada javax.microedition.midlet.*, yang bertujuan untuk mendefinisikan aplikasi dari MIDP dan interaksinya dengan lingkungan kerja tempat aplikasi tersebut bekerja. Dan import javax.microedition.lcdui.* yang berisi sekumpulan fitur untuk user interface.

Emulator Untuk menjalankan Midlet, programmer tidak perlu memiliki dan

mencobanya pada ponsel. Cukup dengan emulator dari ponsel yang dapat dijalan pada PC. Berikut ini contoh emulator:

Page 4: J2ME1

List dan Interaksi UserPada saat kita membuat aplikasi maka diperlukan link, tombol atau item lain yang bisa digunakan user untuk berinteraksi dengan aplikasi. Gunanya tentu saja untuk mengantarkan user ke bagian lain dari aplikasi sesuai yang ditunjuk oleh link, tombol atau link tersebut. API MIDP mempunyai komponen yang dapat digunakan untuk membangun user interface seperti list, radio button, selection box dan lain-lain. Untuk membuat list kita membuat dari class List. Untuk menambahkan daftar pilihan bisa menggunakan method append(). Selanjutnya untuk menampilkan dilayar, kita harus membuat obyek dari class Display. Dari obyek Display ini kita panggil method setCurrent() dengan masukkan parameter obyek List tadi untuk menampilkan list di layar. Pengesetan display kita lakukan pada method startApp(). Berikut ini adalah contoh penggunaan List:

private List mainMenu = null;private Display display;

public MenuMidlet01() {mainMenu = new List("Menu Midlet", List.IMPLICIT);mainMenu.append("Link 1", null);mainMenu.append("Link 2", null);mainMenu.append("Keluar", null);

}

public void startApp(){display = Display.getDisplay(this);display.setCurrent(mainMenu);

}

Agar aplikasi memproses aksi yang diberikan oleh user pada saat memilih menu. Kita harus membuat obyek Alert terlebih dahulu. Selanjutnya menampahkan method setCommandListener() pada obyek List. Untuk memproses aksi user kita harus membuat statement aksi kita pada method commandAction(). Berikut ini contoh memroses aksi user:… …private Alert alert;

public MenuMidlet02() {mainMenu = new List("Menu Midlet", List.IMPLICIT);… …mainMenu.setCommandListener(this);}

public void startApp(){… …}

Page 5: J2ME1

public void commandAction(Command c, Displayable d) {if (d == mainMenu) {if (mainMenu.isSelected(0)) {

alert = new Alert("Alert!!");alert.setString("Link1 ditekan, silakan tunggu..");display.setCurrent(alert);

}else if (mainMenu.isSelected(1)) {

… … }

}

Obyek yang dibentuk dari class Command dapat ditambahkan pada banyak obyek, misalnya obyek yang dibuat dari class Form, class TextBox, class Canvas dan lain-lain.

Menggambar di CanvasSelain itu kita juga bisa menggambar di Canvas. Canvas, sesuai namanya kegunaan obyek ini adalah untuk mengambar. Selain itu sifatnya hampir sama dengan obyek lain yang bisa ditambahkan obyek-obyek lain kedalamnya seperti penambahan obyek command. Obyek canvas sering digunakan untuk membuat aplikasi game. Ketika kita menggambar di Canvas, yang dilakukan terlebih dahulu adalah membuat class Canvas yang nantinya akan dipanggil sebagai obyek. Kita juga bisa menampilkan tulisan di Canvas. Berikut ini adalah cara untuk mengeset model tulisan:

g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_ITALIC, Font.SIZE_MEDIUM));

setFont() adalah method yang dimiliki oleh objek g yang berguna untuk melakukan setting font. Untuk jenis font, style font dan ukuran font digunakan objek Font dan method getFont. Method ini berguna untuk mengambil nilai jenis, style dan ukuran font. Untuk masing-masing nilai telah disediakan oleh objek Font dalam fieldnya. Berikut adalah nilai-nilai dari field-field tersebut.Kelompok jenis (face) font :• FACE_MONOSPACE.• FACE_PROPOTIONAL.• FACE_SYSTEM.

Kelompok style font :• STYLE_BOLD.• STYLE_ITALIC.• STYLE_PLAIN.• STYLE_UNDERLINED.

Kelompok ukuran font :• SIZE_LARGE.• SIZE_MEDIUM.• SIZE_SMALL.

Page 6: J2ME1

Untuk lebih lengkapnya bisa dibaca pada referensi tentang MIDP API pada bagian class Graphics. Setelah model tulisan kita tentukan, kita bisa mulai menuliskan tulisan di Canvas dengan cara sebagai berikut:

g.drawString("J2ME!", getWidth(), getHeight(), g.BOTTOM|g.RIGHT);

Method ini adalah cara untuk melukis string pada canvas. Yang perlu diperhatikan adalah pada bagian g.BOTTOM|g.RIGHT, bagian ini merupakan titik pusat dari obyek yang akan digambar.

C. TUGAS PENDAHULUAN1. Apakah teknologi J2ME?2. Apakah yang dimaksud dengan midlet?3. Sebutkan fungsi-fungsi yang ada dalam siklus hidup sebuah midlet dan

jelaskan masing-masing!4. Apakah yang dimaksud dengan AMS?5. Bagaimana cara membuat aplikasi J2ME?

D. PERCOBAAN

Percobaan 1Membuat menu dengan List. Program yang memuat penggunaan List untuk membuat menu.

Simpan file .java tersebut di apps/MenuDanList/src/MenuMidlet01.java. Melalui Ktools, tekan Build – Run

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class MenuMidlet01 extends MIDlet { private List mainMenu = null; private Display display; public MenuMidlet01() { mainMenu = new List("Menu Midlet", List.IMPLICIT); mainMenu.append("Link 1", null); mainMenu.append("Link 2", null); mainMenu.append("Keluar", null); } public void startApp(){ display = Display.getDisplay(this); display.setCurrent(mainMenu); } public void pauseApp() { } public void destroyApp(boolean b) { }}

Page 7: J2ME1

Percobaan 2Interaksi dengan menu. Memproses aksi sesuai dengan item dari List yang dipilih.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class MenuMidlet02 extends MIDlet implements CommandListener { private List mainMenu = null; private Display display; private Alert alert; public MenuMidlet02() { mainMenu = new List("Menu Midlet", List.IMPLICIT); mainMenu.append("Link 1", null); mainMenu.append("Link 2", null); mainMenu.append("Keluar", null); mainMenu.setCommandListener(this); } public void startApp(){ display = Display.getDisplay(this); display.setCurrent(mainMenu); } public void pauseApp() { } public void destroyApp(boolean b) { } public void commandAction(Command c, Displayable d) { if (d == mainMenu) { if (mainMenu.isSelected(0)) { alert = new Alert("Alert!!"); alert.setString("Link1 ditekan, silakan tunggu.."); display.setCurrent(alert); } else if (mainMenu.isSelected(1)) { alert = new Alert("Alert!!"); alert.setString("Link2 ditekan, silakan tunggu.."); display.setCurrent(alert); } else if (mainMenu.isSelected(2)) { destroyApp(false); notifyDestroyed(); } } }}

Page 8: J2ME1

Percobaan 3Program yang membuat obyek-obyek yang dibentuk dari class Command yang akan ditambahkan ke dalam obyek yang dibentuk dari class Form.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class CommandMidlet01 extends MIDlet implements CommandListener { private Command cmdKeluar; private Command cmdAlert; private Display display; private Form form; private Alert alert;

public CommandMidlet01() { form = new Form("Aplikasi 01"); cmdKeluar = new Command("Keluar", Command.EXIT, 1); cmdAlert = new Command("Alert", Command.SCREEN, 2); form.addCommand(cmdAlert); form.addCommand(cmdKeluar); form.setCommandListener(this); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(form); }

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void commandAction(Command c, Displayable d) { if (d == form) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } else { alert = new Alert("Alert..!!!"); alert.setString("Tombol Alert ditekan..."); display.setCurrent(alert); } } }}

Page 9: J2ME1

Percobaan 4Aplikasi yang didalamnya terdapat perintah (command) untuk keluar aplikasi dan untuk memanggil menu yang merupakan objek dari List. Pada menu terdapat item-item yang akan memberikan aksi berupa alert yang merupakan objek yang dibentuk dari class Alert. Selain itu juga terdapat aksi yang mengembalikan ke tampilan awal aplikasi.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class CommandMidlet02 extends MIDlet implements CommandListener { private Display display; private Command cmdMenu; private Command cmdKeluar; private TextBox textBox; private List mainMenu;

public CommandMidlet02() { textBox = new TextBox("Aplikasi 02", "Ini Command Midlet 02", 256, 0); cmdMenu = new Command("Menu", Command.SCREEN, 1); cmdKeluar = new Command("Keluar", Command.SCREEN, 1); textBox.addCommand(cmdMenu); textBox.addCommand(cmdKeluar); textBox.setCommandListener(this); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(textBox); }

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void commandAction (Command c, Displayable d) { if (d == textBox) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } else if (c == cmdMenu) { mainMenu = new List("Menu Aplikasi 02", List.IMPLICIT); mainMenu.append("Link 1", null); mainMenu.append("Link 2", null); mainMenu.append("Kembali", null); mainMenu.setCommandListener(this); display.setCurrent(mainMenu); } }

Page 10: J2ME1

Percobaan 5Aplikasi yang didalamnya terdapat proses pengurangan obyek command.

else if (d == mainMenu) { if (mainMenu.isSelected(0)) { // Ketik operasi yang diinginkan // ketika tombol untuk Link1 ditekan } else if (mainMenu.isSelected(1)) { // Ketik operasi yang diinginkan // ketika tombol untuk Link2 ditekan } else if (mainMenu.isSelected(2)) { display.setCurrent(textBox); } } }}

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class CommandAddMidlet03 extends MIDlet implements CommandListener{ private Display display; private Command cmdKeluar; private Command cmdPerintah1; private Command cmdPerintah2; private Command cmdKembali; private Form form;

public CommandAddMidlet03() { cmdKeluar = new Command("Keluar", Command.EXIT, 1); cmdPerintah1 = new Command("Link 1", Command.SCREEN, 1); cmdPerintah2 = new Command("Link 2", Command.SCREEN, 1); cmdKembali = new Command("Kembali", Command.BACK, 1); form = new Form("Tambah Kurang"); form.addCommand(cmdKeluar); // menambah objek command form.addCommand(cmdPerintah1); // menambah objek command form.addCommand(cmdPerintah2); // menambah objek command form.setCommandListener(this); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(form); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

Page 11: J2ME1

public void commandAction(Command c, Displayable d) { if (d == form) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } else if (c == cmdPerintah1) { form.removeCommand(cmdPerintah1);

// menghilangkan objek form.removeCommand(cmdPerintah2);

// menghilangkan objek form.removeCommand(cmdKeluar);

// menghilangkan objek form.addCommand(cmdKembali);

// menambah objek command form.setTitle("Perintah 1"); display.setCurrent(form); } else if (c == cmdPerintah2) { form.removeCommand(cmdPerintah1);

// menghilangkan objek form.removeCommand(cmdPerintah2);

// menghilangkan objek form.removeCommand(cmdKeluar);

// menghilangkan objek form.addCommand(cmdKembali);

// menambah objek command form.setTitle("Perintah 2"); display.setCurrent(form); } else if (c == cmdKembali) { form.addCommand(cmdPerintah1);

// menambah objek command form.addCommand(cmdPerintah2);

// menambah objek command form.addCommand(cmdKeluar);

// menambah objek command form.removeCommand(cmdKembali);

// menghilangkan objek form.setTitle("Tambah Kurang"); display.setCurrent(form); } } }}

Page 12: J2ME1

Percobaan 6Program yang dapat menerima masukan untuk diproses. Untuk menerima masukan diperlukan form yang didalamnya terdapat kolom isian. Untuk membuat form diperlukan class Form sedangkan untuk membuat kolom isian diperlukan class TextField.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class FormUIMidlet01 extends MIDlet implements CommandListener{ private Form form; private TextField textField; private Display display; private Command cmdKeluar; private Command cmdAksi; private Alert alert; public String strNama;

public FormUIMidlet01() { form = new Form("Form UI"); textField = new TextField("Nama :", "", 10, 0); cmdKeluar = new Command("Keluar", Command.EXIT, 1); cmdAksi = new Command("Aksi", Command.SCREEN, 2); form.addCommand(cmdKeluar); form.addCommand(cmdAksi); form.append(textField); form.setCommandListener(this); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(form); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable d) { if (d == form) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } else if (c == cmdAksi) { strNama = textField.getString(); alert = new Alert("Pesan"); alert.setString("Hallo "+strNama); display.setCurrent(alert); } } }}

Page 13: J2ME1

Percobaan 7Program yang mengirimkan nilai yang kita isikan untuk ditampilkan pada kolom isian yang lain. Sebagai contoh user memasukkan nilai pada kolom isian pertama dan setelah mengklik tombol Aksi maka nilai tersebut akan ditampilkan pada kolom isian yang kedua untuk selanjutnya kedua nilai tadi diproses.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class FormUIMidlet02 extends MIDlet implements CommandListener{ private Form form; private TextField textField1; private TextField textField2; private Display display; private Command cmdKeluar; private Command cmdAksi; public String strText;

public FormUIMidlet02() { form = new Form("Form UI 2"); textField1 = new TextField("Input 1 :", "", 10, 0); textField2 = new TextField("Input 2 :", "", 10, 0); cmdKeluar = new Command("Keluar", Command.EXIT, 1); cmdAksi = new Command("Aksi", Command.SCREEN, 2); form.addCommand(cmdKeluar); form.addCommand(cmdAksi); form.append(textField1); form.append(textField2); form.setCommandListener(this); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(form); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable d) { if (d == form) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } else if (c == cmdAksi) { strText = textField1.getString(); textField2.setString(strText); } } }}

Page 14: J2ME1

Percobaan 8Membuat dan menambahkan Canvas

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class GUIMidlet01 extends MIDlet implements CommandListener { private Display display; private Canvas canvas; private Command cmdKeluar;

public GUIMidlet01() { cmdKeluar = new Command("Keluar", Command.SCREEN, 1); canvas = new CanvasGUIMidlet01(); canvas.addCommand(cmdKeluar); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(canvas); canvas.setCommandListener(this); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable d) { if (d == canvas) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } } }}

class CanvasGUIMidlet01 extends Canvas { public void paint(Graphics g) { }}

Page 15: J2ME1

Praktikum 9Menggambar tulisan pada canvas.import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class GUIMidlet02 extends MIDlet implements CommandListener { private Display display; private Canvas canvas; private Command cmdKeluar;

public GUIMidlet02() { cmdKeluar = new Command("Keluar", Command.SCREEN, 1); canvas = new CanvasGUIMidlet01(); canvas.addCommand(cmdKeluar); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(canvas); canvas.setCommandListener(this); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable d) { if (d == canvas) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } } }}

class CanvasGUIMidlet02 extends Canvas { public void paint(Graphics g) { g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD, Font.SIZE_LARGE)); g.drawString("J2ME!", 0, 0, g.TOP|g.LEFT); g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_UNDERLINED, Font.SIZE_LARGE)); g.drawString("J2ME!", getWidth()/2, getHeight()/2, g.TOP|g.HCENTER); g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_ITALIC, Font.SIZE_MEDIUM)); }}

Page 16: J2ME1

Praktikum 10Menggambar obyek seperti kotak, lingkaran dan mewarnai obyek tersebut.import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class GUIMidlet03 extends MIDlet implements CommandListener{ private Command cmdKeluar; private Canvas canvas; private Display display;

public GUIMidlet03() { cmdKeluar = new Command("Keluar", Command.SCREEN, 0); canvas = new CanvasGUIMidlet03(); canvas.addCommand(cmdKeluar); }

public void startApp() { display = Display.getDisplay(this); display.setCurrent(canvas); canvas.setCommandListener(this); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable d) { if (d == canvas) { if (c == cmdKeluar) { destroyApp(false); notifyDestroyed(); } } }}

Page 17: J2ME1

E. LATIHANBuatlah aplikasi J2ME yang memiliki menu dan bisa menerima input dalam suatu serta memproses input tersebut.

F. LAPORAN RESMI1. Buat analisa untuk tiap percobaan yang dilakukan!2. Cetak listing program pada soal latihan dan buat analisanya!3. Buatlah kesimpulan hasil praktikum.

class CanvasGUIMidlet03 extends Canvas { public void paint(Graphics g) { /* background color luar - COKLAT */ g.setColor(210, 135, 28); g.fillRect(0, 0, getWidth(), getHeight()); /* background color dalam - PUTIH */ g.setColor(255, 255, 255); g.fillRect(3, 20, getWidth()-7, getHeight()-27); /* warna border - HITAM */ g.setColor(0, 0, 0); /* border luar */ g.drawRect(0, 1, getWidth()-1, getHeight()-3); /* border dalam */ g.setStrokeStyle(g.DOTTED); g.drawRect(3, 20, getWidth()-8, getHeight()-27); g.drawRect(4, 21, getWidth()-10, getHeight()-29); /* judul */

g.setColor(255, 255, 255); g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("J2ME", getWidth()/2, 1, g.TOP|g.HCENTER); /* layar dan tombol */ g.setStrokeStyle(g.SOLID); g.setColor(0, 0, 0); g.drawRoundRect(8, 25, getWidth()-40, getHeight()-37, 3, 3); g.drawRoundRect(getWidth()-28, 25, 19, getHeight()-57, 3, 3); g.drawArc(getWidth()-26, getHeight()-28, 16, 16, 0, 360); }}