presentasi is 3 - Perguruan Tinggi Raharja

Download Report

Transcript presentasi is 3 - Perguruan Tinggi Raharja

GUI MENGGUNAKAN HANDPHONE
BERFASILITAS J2ME
INDEPENDENT STUDY
0733458648
0733458607
0733458307
0733459212
ACHMAD TAUFIK
ELIA DWI CHANDRA
RINDHY ANTHIKA NADYA
TRI SETYO
SISTEM KOMPUTER
BAB 1
1.1 Latar Belakang
J2me atau Java2 Micro Edition adalah sebuah teknologi yang telah banyak
digunakan dalam pengembangan aplikasi pada ponsel dewasa ini, mulai dari
aplikasi yang berupa permainan sampai dengan aplikasi ponsel sebagai pendukung
aplikasi yang lebih besar seperti aplikasi enterprise. Nama J2ME digunakan sebagai
“payung” untuk aneka teknologi Java untuk device micro (di antaranya adalah
Personal Java, JavaCard, MIDP, dll).
Dalam J2ME dibagi menjadi dua bagian besar yang dikenal sebagai
configuration dan profile[1]. Dua istilah ini sangatlah penting dalam pengembangan
aplikasi wireless dengan Java sehingga harus dipahami dengan baik. Sebuah
profile dibangun dalam sebuah configuration namun menambahkan beberapa API
(Application Program Interface) khusus agar dihasilkan sebuah lingkungan yang
lengkap untuk membangun aplikasi. Sedangkan sebuah configuration
mendeskripsikan sebuah JVM dan sekumpulan API dasar, dan hal ini tidak cukup
untuk membangun sebuah aplikasi yang lengkap. Profile-profile biasanya termasuk
API-API untuk aplikasi lifecycle, user inteface, dan penyimpanan secara kontinu.
J2ME configuration mendefinisikan lingkungan kerja J2ME runtime. Oleh karena
handheld devices memiliki fitur-fitur yang berbeda-beda, J2ME configuration
dirancang untuk menyediakan library standar yang mengimplementasikan fitur
standar dari handheld devices.
1.2 Pembatasan masalah
Berdasarkan latar belakang di atas penulis mendapatkan masalah yaitu bagaimana membuat GUI (Graphical User Interface)
menggunakan J2ME (Java2 Micro Edition).
1.3 Ruang Lingkup
Penulis memfokuskan pembahasan pada langkah – langkah membuat GUI menggunakan J2ME.
Tujuan Pembahasan
Berdasarkan latar belakang masalah yang telah dijabarkan diatas maka tujuan penulisan tugas ini adalah :
Adalah sebagai syarat untuk menyelesaikan mata kuliah Independent Study.
Sebagai bahan pembelajaran mengenai perkembangan ilmu pengetahuan dan teknologi.
Dapat memahami, mengerti dan mendalami tentang teknologi Java pada ponsel.
Dapat tertarik dengan pemrograman Java2 Micro Edition.
Metode Penulisan
Di dalam pelaksanaan penulisan yang dilakukan, penulis menggunakan beberapa metode yaitu:
Referensi
Melakukan studi kepustakaan dengan membaca buku-buku dan mencari berita dari internet mengenai seputar topik
permasalahan yang diambil.
Eksperimen
Pada tahapan ini langsung melakukan percobaan-percobaan atau praktek pemrograman java.

Sistematika Penulisan
Sistematika penulisan laporan ini terdiri dari 5 ( lima ) bab, dengan uraian sebagai berikut.
BAB I : PENDAHULUAN
Pada bab ini berisi penjelasan atau latar belakang, pembatasan masalah, tujuan penulisan, ruang lingkuppenulisan , metode
penulisan , dan sistematika penulisan.
BAB II :
LANDASAN TEORI
Pada bab ini berisi penjelasan mengenai pengenalan J2ME, pengertian J2ME, configurasi CLDC dan CDC,pengenalan MIDP,
pengenalan GUI.
BAB III : PEMBAHASAN
Pada bab ini berisi mengenai penjelasan mengenai pemrograman GUI menggunakan Java2 Micro Edition.
BAB IV : PERANCANGAN
Pada bab ini berisi mengenai penjelasan mengenai rancangan-rancangan yang ada didalam program GUI.
BAB V : KESIMPULAN
Pada bab ini berisi tentang kesimpulan dan saran-saran yang dikemukakan dari hasil penulisan yang dilakukan.
DAFTAR PUSTAKA
BAB 2
LANDASAN TEORI
2.1 PENGERTIAN J2ME
Java 2 Micro Edition (J2ME) merupakan subset dari J2SE (Java 2 Standard Edition) yang ditujukan untuk
implementasi pada peralatan embeded system dan handhled yang tidak mampu mendukung secara penuh implementasi
mengunakan J2SE. Embedded system adalah produk-produk dengan komputer kecil di dalamnya, namun aplikasi yang
bisa dimanfaatkan dari peralatan tersebut sangatlah spesifik. Hal ini tentu saja berbeda dengan komputer PC (Personal
Computer) yang kita kenal sehari-hari, yang mampu digunakan untuk berbagai aplikasi. Contoh embedded system yang
ada misalnya adalah aplikasi-aplikasi yang memanfaatkan mikroprosesor seperti Televisi, sistem keamanan gedung, dan
lain sebagainya. Nama J2ME digunakan sebagai “payung” untuk aneka teknologi Java untuk device micro (di antaranya
adalah Personal Java, JavaCard, MIDP, dll).
Gambaran arsitektur Java
2.2 cakupan J2ME
Device yang bisa diprogram dengan J2ME mulai dari smart card sampai PDA. Masingmasing jenis device memiliki kemampuan komputasi yang berbeda. Smartcard memiliki memori
<1Mb, dengan kecepatan prosessor yang rendah. PDA saat ini memiliki memori >8Mb dengan
kecepatan prosessor yang tinggi. Device dengan kemampuan komputasi yang sama dibagi ke dalam
Configuration.
Sebuah konfigurasi (configuration) mendefinisikan satu set library minimum dan
kemampuan Virtual Machine minimum yang dimiliki sebuah device.
Device yang memiliki kemampuan pemrosesan yang sama dan batasan memori yang
sama memiliki konfigurasi yang sama
Contoh configuration
 CDC (Connected Device Configuration)
 CLDC (Connected Limited Device Configuration)
Contoh Configuration: CLDC
 Punya koneksi terbatas (limited)
artinya user bisa online jika diperlukan
 Tidak mendukung tipe data floating point dan
double
 Device mungkin hanya memiliki memori non volatile 128 Kb, memori volatile 8 kb untuk data
persisten, dan 32 Kb untuk runtime Java
Contoh device CLDC: Ponsel J2ME, PDA
dengan koneksi wireless, pager dua arah
Contoh Configuration: CDC
 Punya koneksi jaringan yang selalu online (connected)
 Mendukung seluruh fitur bahasa Java (JDK1.3)
 Device setidaknya memiliki 512kb memori non volatile dan 256 Kb memori volatile
Contoh Device: PDA Phone
2.2.1 Profile
Profile adalah API yang diimplementasikan di atas (on top of) sebuah konfigurasi yang
ditujukan untuk device dengan jenis/kegunaan yang serupa. Sebuah profile berdiri di atas sebuah
configuration.
 Contoh device serupa: ponsel
2.3 MIDP 1.0
Mobile Information Device Profile versi 1.0 berada di atas CLDC. Hampir semua Ponsel
J2ME mendukung profile ini. MIDP memberikan batasan minimum bagi device dan satu Set API untuk
peralatan mobile. API yang sangat generik yang pasti bisa didukung semua jenis device MIDP.
Aplikasi MIDP disebut dengan MIDlet.
2.3.1 API Non Standar
Selain API Standar, mungkin ada API dari Vendor yang tersedia di device.
Contoh: API untuk backlight atau vibrator (nada getar), API ini tidak masuk standar karena tidak
semua device punya backlight atau vibrator. Device yang memakai API non standar tidak dijamin bisa
berjalan di device lain. API MIDP 1.0 adalah API Standar. Program yang hanya memakai API ini pasti
berjalan di aneka device MIDP 1.0.
2.4 MIDlet
MIDlet adalah aplikasi yang dibuat menggunakan Java 2 Micro Edition dengan profile
Mobile Information Device Profile (MIDP) [4].. MIDP dikhususkan untuk digunakan pada handset
dengan kemampuan CPU, memori, keyboard, dan layar yang terbatas, misalnya pada handphone,
pager, PDA, dan sebagainya. Arsitektur tingkat tinggi dari sebuah aplikasi MIDP ditunjukkan oleh
Gambar 1 sebagai berikut.
Gambar 1. Arsitektur Sebuah Aplikasi MIDP
Secara umum, terdapat beberapa hal penting dalam membuat
sebuah aplikasi MIDlet, yaitu menyangkut lifecycle, user
interface, command handling, deployment dan Application
Management. Paket javax.microedition.midlet memiliki kelas
MIDlet yang mendefinisikan MIDPJava 2 Micro Edition adalah
edisi Java untuk device dengan kemampuan komputasi
terbatas.
2.4.1 API GUI
GUI dapat dibuat dengan komponen standar yang sudah
disediakan (dalam package lcdui). List,Textbox, dll. Java akan
secara otomatis menangani perbedaan antar device (ukuran
layar,warna, dll).
GUI dapat dibuat dengan canvas. Programmer menggambar
sendiri semua yang diperlukan dan menangani perbedaan jenis
layar (tidak akan dijelaskan di sini). Umumnya dipakai oleh
game.
BAB 3
PEMBAHASAN
3.1 Display
Display merupakan objek yang mempresentasikan pengelola layar pada perangkat. Pada
sebuah MIDlet hanya terdapat satu objek display. Objek display menyediakan metode untuk
menggambar dan menampilkan elemen antarmuka grafis pada layar. Objek display juga
menyediakan metode untuk mengetahui properti layar perangkat seperti apakah layar perangkat
mendukung layar berwarna atau tidak.
3.2 Displayable
Diplayable adalah kelas abstrak dari antarmuka pemakai (user interface). Dispalyable
memiliki dua buah subkelas yaitu Canvas sebagai antarmuka level endah dan Screen sebagai
antarmuka level tinggi. Pada sekali waktu hanya dapat ditampilkan satu buah objek Displayable
yang disebut sebagai current Displayable. Displayable berbeda dengan display, jika dalam
sebuah MIDlet hanya boleh ada sebuah display, lain dengan displayable, pada sebuah MIDlet
boleh terdapat lebih dari satu displayable tetapi ada atu waktu hanya apat ditampilkan satu
displayable oleh objek display, misalnya dalam satu MIDlet diperbolehkan ada banyak Canvas
(subkelas displayable) yang ditampilkan secara bergantian oleh display.
3.3 Screen
Screen adalah kelas di atas semua antarmuka pemakia level tinggi atau biasa di sebut
superclass. Sebagian besar komponen Screen tidak mengizinkan penambahan komponen lain dan
penghapusan pada komponen tersebut, komponen – kompoen itu antara lain List, Textbox, dan
Alert, misalnya jika sebuah TextBoxt telah diset sebagai diplayable yang ditampilkan maka
pengembang tidak dapat lagi menambahkan komponen lain dengan level sejajar TextBox. Jenis
lain dari komponen screen adalah form yang mengizinkan pengembang untuk menambah elemen
grafis untuk ditampilkan.
3.4 Canvas
Canvas merupakan subkelas dari Displayable yang menggunakan antarmuka grafis level
rendah. Canvas, sesuai namanya guna objek ini untuk mengambar. Selain itu sifanya hampir sama
dengan objek lain yang bisa ditambahkan objek-objek lain kedalamnya seperti penambahan Objek
command. Objek canvas sering digunakan untuk membuat aplikasi game. Pada bagian ini akan
diberikan contoh bagaimana menggambar di canvas.
3.5 Font
Sebuah font digunakan pada antarmuka pemakai level rendah. Font digunakan untuk
mendefinisikan mode sebuah karakter atau string ke layar. Font ini hanya dapat digunakan
pada antarmuka pemakai level rendah separti pada canvas.
•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.
3.6 List dan Interaksi User
Pada 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. Tip dan Trik ini akan memberikan langkah-langkah
untuk membuat menu dengan menggunakan class List pada aplikasi ponsel. Class List
(javax.microedition.lcdui.List) merupakan class turunan dari class abstract
javax.microedition.lcdui.Screen yang menyediakan masukan pilihan (multiple choice) pada layar.
3.7 Alert
Alert adalah sejenis pesan yang tampil di layar yang menampilkan teks maupun gambar ke
layar yang berguna utuk menginformasikansesuatu ke pemakai.
3.8 Command, List dan Interaksi User
Pada tulisan ini akan dibahas tentang penggunaan class Command dan tip-trik penggunaan
class ini dalam sebuah aplikasi.
3.8.1 Menambahkan Command
Objek yang dibentuk dari class Command dapat ditambahkan pada banyak objek, misalnya
objek yang dibuat dari class Form, class TextBox, class Canvas dan lain-lain. Berikut ini objekobjek
yang dibentuk dari class Command akan ditambahkan ke dalam objek yang dibentuk dari class Form.
3.9 Form dan Textfield
Pada saat membuat aplikasi kadang kita memerlukan suatu masukan yang diisi oleh pengguna
untuk diproses. Untuk maksud tersebut diperlukan form yang didalamnya terdapat kolom isian.
Bekerja dengan Form
Bekerja dengan Form memungkinkan Anda untuk menampilkan beberapa komponen GUI
semacam daftar pilihan, masukan teks (textbox) dalam satu layar. Form diimplementasikan oleh class
javax.microedition.lcdui.Form. Form dapat menampung komponen-komponen yang disebut item dalam
satu layar. Item tersebut adalah textfield,
image, date field, gauge dan choice group.
ChoiceGroup
Class ChoiceGroup(javax.microedition.lcdui.ChoiceGroup) merupakan
class turunan dari class abstract javax.microedition.lcdui.Item yang menyediakan
masukan pilihan (multiple choice) pada layar. Konstruktor dari class ChoiceGroup
ini ada dua yaitu:
public ChoiceGroup(String title, int choiceType)
public ChoiceGroup(String title, int choiceType, String[]
choiceElement, Image[] choiceImages)
Parameter-parameter:
•• String title
Untuk memberikan title pada daftar pilihan yang ditampilkan.
•• int choiceType
Tipe pilihan yang digunakan dapat berisi:
Choice.EXCLUSIVE
Berarti setiap saat hanya bisa dipilih 1 buah pilihan saja.
Choice.MULTIPLE
Berarti pengguna bisa memilih lebih dari 1 pilihan. Berbeda dengan class List
sebelumnya yang bisa memiliki tipe Choice.IMPLICIT class ini tidak memiliki tipe
yang bersangkutan.
•• String[] choiceElement
Merupakan array dari elemen yang akan ditampilkan
•• Image[] choiceImages
Merupakan array dari gambar(javax.microedition.lcdui.Image) elemen yang akan ditampilkan.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ChoiceGroupDemo extends MIDlet {
private Display d ;
private Form form;
private ChoiceGroup cg ;
public ChoiceGroupDemo(){
form = new Form("Ini ChoiceGroup");
//ubah dengan Choice.EXCLUSIVE dan Choice.MULTIPLE
cg = new ChoiceGroup("Pilihan Buah",Choice.MULTIPLE);
cg.append("Apel", null);
cg.append("Jeruk", null);
cg.append("Semangka", null);
form.append(cg);
}
public void startApp() {
d = Display.getDisplay(this) ;
d.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
3.9.1 Membuat Form dan Kolom Isian
Untuk membuat form diperlukan class Form sedangkan untuk membuat kolom isian
diperlukan class TextField. Berikut adalah contoh kodenya.
FormUIMidlet01.java
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);
}
}
}
}
Pada aplikasi di atas user akan memasukkan nama dan setelah menekan tombol Aksi maka akan
ditampilkan alert yang akan menyapa user tersebut seperti yang ditampilkan oleh emulator Nokia seri
60 di bawah ini.
Transaksi Nilai Antar Kolom Isian
Contoh berikutnya akan memberikan contoh bagaimana 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. Kode program dari kasus ini adalah sebagai berikut
FormUIMidlet02.java
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);
}
}
}
}
Berikut adalah tampilan dari program ini :
3.9.4 Image
Objek Image digunakan untuk meletakkan objek
gambar yang bisa bersifat immutable atau mutable.
Gambar yang bersifat immutable artinya tidak bisa
diubah-ubah oleh aplikasi dan umumnya berupa gambar
yang diambil dari sebuah file gambar, URL atau tempat
lain. Sebaliknya gambar yang bersifat mutable bisa
diubah-ubah oleh aplikasi. Konstruktor dari class Image
ini bersifat statik, sehingga Anda tidak menggunakan
new untuk membuat sebuah objek Image melainkan
mengacu ke fungsi createImage() pada objek Image ini:
public static void createImage(String name)
public static void createImage(Image img)
public static void createImage(int width,
int height)
Konstruktor pertama dan kedua digunakan untuk
membuat objek Image yang bersifat immutable. Jenis
file gambar yang mendukung, hanya file dengan format
PNG (Portable Network Graphics).
BAB 4
PERANCANGAN
4.1 Aplikasi GUI menggunakan IDE
Kita akan menggunakan Netbeans IDE untuk melakukan hal ini. Berikut
adalah langkah-langkahnya :
1. Install Netbeans
2. Jalankan Netbeans sehingga muncul layar utama IDE
3.
4.
Klik menu File | New Project
Pilih Java - Java Application
5.
Beri nama Project AppHelloWorld
dan hilangkan pilihan Create Main
Class,
karena
kita
langsung
membuat main class pada form
Hello World
6.
7.
8.
Klik kanan pada Project yang
baru dibuat, pilih New |
JFrame Form…
Beri nama Form yang baru
dibuat dengan nama
frmHelloWorld. Klik finish. Kita
akan diberi
satu buah form yang bisa
didesain secara leluasa.
Jika di IDE Visual Basic kita
mengenal Toolbox, di Netbeans
kita mendapatkan sesuatu
yang mirip dengan nama
Pallete
9.
Drag dan drop komponen
Button dari Pallet ke form yang
baru
kita
buat
sehingga
muncul 1 buah tombol dengan
text jButton1
10.
Klik kanan pada tombol
tersebut dan pilih Change
Variable Name. Ubah nama
tombol menjadi btnHello
11.
Klik kanan lagi pada tombol
dan pilih Edit Text. Ganti text
menjadi Hello World
Klik kanan lagi juga pada
tombol dan pilih menu Events |
Actions | actionPerformed.
Event ini bisa diumpamakan
sebagai event Command_Click
pada Visual Basic
12.
13.
Kita akan mendapatkan layar kode.
Ketikkan kode berikut :
14.
view plaincopy to clipboardprint?
–
JOptionPane.showMessageDial
og(null, "Hello World !");
15.
Kita akan melihat bahwa Java
sudah pintar dengan langsung
membuat tanda kutif tutup pada
saat kita hendak mengetik “Hello
World !”.
16.
17.
Seperti halnya VB, Java juga
memiliki feature autocomplete
untuk method dan properties. Disini
kita juga akan menemukan 1
keunggulan penggunaan IDE
dibandingkan mengetik program
menggunakan konsole / text editor,
yaitu feature Auto Import
Lihat pada bagian kiri kode ada
semacam bohlam lampu kecil. Ini
menandakan “ada sesuatu” dengan
kode yang kita ketik. Karena kita
menggunakan JOptionPane, kita
membutuhkan librarynya agar Java
mengenali komponen ini. Klik pada
pada bohlam lampu tersebut dan
pilih
Add
Import
for
javax.swing.JOptionPane
18.
19.
20.
21.
Setelah kita pilih, Netbeans
secara otomatis akan
menambahkan tulisan import
javax.swing.JOptionPane;
pada bagian atas kode.
Simpan project
Klik kanan pada form yang
baru dibuat dan klik Run atau
tekan tombol SHIFT + F6
Kita akan mendapatkan form
dengan 1 buah tombol yang
jika diklik akan memunculkan
sebuah Message Box “Hello
World !”
Mengapa menggunakan JOptionPane dan bukannya Label untuk
sekedar menampilkan tulisan Hello World ? Karena JOptionPane
ini akan banyak kita gunakan pada tutorial mendatang. Kalau
sekedar Label, semestinya tanpa perlu setting macam-macam kita
sudah bisa memahaminya
4.2 Membuat dan Menambahkan Canvas
Yang dilakukan terlebih dahulu adalah membuat class Canvas yang nantinya akan
dipanggil sebagai objek.
Berikut adalah contoh kodenya.
GUIMidlet01.java
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) {
}
}
Hasil dari GUIMidlet01 hanya menampilan layar kosong dengan perintah Keluar.
4.2.1 Menggambar di Canvas
Yang terakhir pada tulisan ini akan diberikan contoh bagaimana menggambar
objek seperti kotak, lingkaran dan mewarnai objek tersebut.
GUIMidlet03.java
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();
}
}
}
}
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("e-ChocO", 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);
}
}
Berikut adalah tampilan dari aplikasi di atas yang dijalankan pada emulator
Nokia seri 60.
4.3 Setting Font
Berikut adalah contoh menggambar tulisan pada canvas.
GUIMidlet02.java
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("Chocolove!", 0, 0, g.TOP|g.LEFT);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_
UNDERLINED,
Font.SIZE_LARGE));
g.drawString("Chocolove!", getWidth()/2, getHeight()/2,
g.TOP|g.HCENTER);
g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_ITALIC
,
Font.SIZE_MEDIUM));
g.drawString("Chocolove!", getWidth(), getHeight(),
g.BOTTOM|g.RIGHT);
}
}
Hasil dari contoh di atas adalah sebagai berikut :
4.4 Membuat Menu dengan List
Berikut adalah contoh kode program yang
memuat penggunaan List untuk membuat
menu.
MenuMidlet01.java
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) {
}
}
4.5 Interaksi dengan Menu
Aplikasi di atas masih belum memproses aksi yang diberikan oleh user pada
saat memilih menu. Selanjutnya aplikasi di atas akan dimodifikasi agar bisa
memproses aksi sesuai dengan item dari List yang dipilih. Dan berikut adalah
kode programnya.
MenuMidlet02.java
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();
}
}
}
}
Berikut adalah tampilan pada emulator Nokia Seri 60 ketika Link1 atau
Link2 dipilih.
4.6 Command dan List
Tahap selanjutnya akan dibuat aplikasi 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.
Berikut adalah kode dari aplikasi yang telah dideskripsikan di atas.
CommandMidlet02.java
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);
}
}
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);
}
}
}
}
Berikut adalah tampilan
pertama dari aplikasi dan
ketika tombol untuk Menu
ditekan.
4.6.1 Tambah dan Kurang Command
Pada objek dapat ditambahkan objek-objek yang dibuat dari kelas Command. Karena di dunia
ini keseimbangan maka selain proses tambah juga ada proses kurang. Jadi objek command dapat
dihilangkan dari suatu objek lain.
4.6.1.1 Menambah Objek Command
Ada tulisan sebelumnya sudah banyak yang membahas tentang penambahan objek command pada
objek lain seperti objek dari class List atau Form. Berikut akan diulang sedikit tentang langkahlangkah penambahan objek command tapi dengan cara yang sedikit berbeda. Berikut adalah kode dari
suatu aplikasi yang akan ditambahkan objek command.
CommandAddMidlet01.java
import javax.microedition.midlet.*;
mport javax.microedition.lcdui.*;
public class CommandAddMidlet01 extends MIDlet implements CommandListener{
public CommandAddMidlet01() {
}
public void startApp() {
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
}
}
Yang perlu diperhatikan adalah ada penambahan baris sebagai berikut :
public class CommandAddMidlet01 extends MIDlet implements CommandListener
Dan method berikut :
public void commandAction(Command c, Displayable d) {
}
Perhatian
Untuk lebih jelasnya tentang class CommandListener dan method commandAction
bisa dibaca pada referensi tentang MIDP API.
CommandAddMidlet02
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class CommandAddMidlet02 extends MIDlet implements CommandListener{
private Display display;
private Command cmdKeluar;
private Form form;
public CommandAddMidlet02() {
cmdKeluar = new Command("Keluar", Command.EXIT, 1); // menambah objek command
form = new Form("Tambah Kurang");
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();
}
}
}
}
Berikut adalah contoh aplikasi yang didalamnya ada proses pengurangan objek command.
CommandAddMidlet03.java
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) {
}
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);
}
}
}
}
Berikut adalah tampilan dari
CommandAddMidlet pada emulator
Siemens M55.
4.7 Form dan Ticker
Pada tulisan ini akan diberikan contoh aplikasi yang menggunakan objek ticker
pada form. Apabila sedang menyaksikan tayangan pada televisi akan sering terlihat
berita pada bagian bawah layar yang berupa tulisan berjalan. Atau pada acara yang
berhubungan dengan bursa efek akan bisa dilihat juga berupa tulisan berjalan yang
memberikan informasi mengenai keadaan saham pada saat itu. Untuk membuat
“tayangan” seperti itu pada layar ponsel dapat digunakan class Ticker.
Ticker merupakan teks yang berjalan pada bagian atas layer aplikasi MIDlet.
Sebuah ticker dapat ditempatkan pada objek-objek turunan class Screen yang telah
disebutkan yaitu TextBox, List, Form dan Alert. Untuk menambahkan ticker ke screen
lakukan (lihat pada contoh sebelumnya) :
Ticker tick = new Ticker("J2ME") ;
t.setTicker(tick);
display.setCurrent(t);
keterangan :
t adalah Objek dari Textbox, sedangkan display adalah Objek Display.
Kemudian fungsi penting lainnya :
• public void setString(String str);
untuk menetapkan teks yang akan ditampilkan sebagai ticker
• public String getString();
Menghasilkan teks yang ditampilkan oleh objek Ticker yang sedang aktif pada objek
screen.
Perlu Anda perhatikan bahwa tidak ada fungsi yang bisa digunakan untuk menghentikan
gerakan teks pada Ticker, jadi teks akan terus berputar secara kontinu. Arah dan
kecepatan teks yang bergerak pada Ticker ditentukan oleh implementasi MIDP.
4.7.1 Membuat Ticker Sederhana
Berikut adalah contoh penambahkan objek ticker pada form.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class TickerMidlet01 extends MIDlet implements CommandListener {
private Form form;
private Display display;
private Ticker ticker;
private Command cmdKeluar;
public TickerMidlet01() {
cmdKeluar = new Command("Keluar", Command.EXIT, 1);
ticker = new Ticker("Saham TELKOM naik 10 point");
form = new Form("Ticker");
form.setTicker(ticker);
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 (c == cmdKeluar) {
destroyApp(false);
notifyDestroyed();
}
}
}
Untuk membuat objek ticker digunakan baris berikut :
ticker = new Ticker("Ini text berjalan yang akan
ditampilan pada layar ");
Sedangkan untuk menambahkan objek ticker pada form digunakan
method setTicker(objekTicker), seperti di bawah ini :
form.setTicker(ticker);
Berikut adalah tampilan objek ticker pada layar ponsel.
J2ME WTK
Nokia Seri 60
Siemens M55
Perhatian : Berbeda pada ponsel lainnya, pada Siemens, teks dari objek ticker
menempati baris sama dengan title dari form. Selain itu, teks pada objek
ticker hanya berjalan setelah layar saja.
4.7.2 Setting Teks pada Ticker
Pada class Ticker terdapat dua method yaitu getString() dan setString(String
str). Berikut adalah contoh untuk aplikasi yang memberikan fasilitas bagi user
untuk mengubah teks yang ditampilkan oleh objek ticker. Berikut adalah contoh
dari aplikasi tersebut.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class TickerMidlet02 extends MIDlet implements CommandListener {
private Form form; private Display display;
private Ticker ticker; private Command cmdKeluar;
private Command cmdTicker;
private TextField textField;
public TickerMidlet02() {
cmdKeluar = new Command("Keluar", Command.EXIT, 1);
cmdTicker = new Command("Ticker", Command.SCREEN, 2);
textField = new TextField("Teks : ", "", 50, TextField.ANY);
ticker = new Ticker("");
form = new Form("Ticker");
form.append(textField);
form.addCommand(cmdKeluar);
form.addCommand(cmdTicker);
form.setCommandListener(this);
}
public void startApp() {
display = Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp() {
}
Aplikasi ini merupakan hasil modifikasi dari TickerMidlet01.java.
Objek yang ditambahkan adalah objek textField yang akan digunakan
oleh user untuk memasukkan teks yang akan digunakan oleh objek
ticker. Pada konstruktor hanya dilakukan pembuatan objek ticker dan
belum ditambahkan pada objek form. Setelah “tombol” Ticker ditekan
baru objek ticker ditambahkan pada form dengan baris seperti
berikut ini:
if (c == cmdTicker) { form.setTicker(ticker);
ticker.setString(textField.getString()); }
Untuk menampilkan teks yang diisikan user pada textField digunakan
baris berikut :
ticker.setString(textField.getString());
Dan berikut adalah tampilan dari aplikasi di atas :
4.8 Image
Contoh kodenya:
import java.io.IOException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class imageDemo extends MIDlet {
private Display d ;
private Form form;
private Image img ;
public imageDemo(){
form = new Form("Tentang Image");
try{
img = Image.createImage("/com/duke.png");
form.append(img);
}catch(IOException e){
}
}
public void startApp() {
d = Display.getDisplay(this) ;
d.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional){
}
}
Kita harus menggunakan try{}
catch{} karena fungsi
createImage() melemparkan
eksepsi berupa
java.io.IOException. Exception ini
untuk menangani kesalahan
input/output. Contoh lain dengan
menggunakan konstruktor kedua
yaitu dengan objek Image yang
telah ada maka kita bisa membuat
objek Image lain.
package com;
import java.io.IOException;
Import javax.microedition.
midlet.*;
Import javax.microedition.
lcdui.*;
public class imageDemo2 extends
MIDlet {
private Display d ;
private Form form;
private Image img1, img2 ;
public imageDemo2(){
Kita harus menggunakan try{} catch{} karena fungsi createImage() melemparkan
eksepsi berupa java.io.IOException. Exception ini untuk menangani kesalahan
input/output. Contoh lain dengan menggunakan konstruktor kedua yaitu dengan objek
Image yang telah ada maka kita bisa membuat objek Image lain.
package com;
import java.io.IOException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class imageDemo2 extends MIDlet {
private Display d ;
private Form form;
private Image img1, img2 ;
public imageDemo2(){
form = new Form("Tentang Image");
try{
img1 = Image.createImage("/com/duke.png");
img2 = Image.createImage(img1);
form.append(img1);
form.append(img2);
}catch(IOException e){
}
}
public void startApp() {
d = Display.getDisplay(this) ;
d.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional){
}
}
Fungsi-fungsi penting dalam class Image adalah:
• public Graphics getGraphics()
Menghasilkan objek Graphics yang bersesuaian dari objek Image yang
bersangkutan.
• public int getHeight()
menghasilkan tinggi objek gambar yang ada.
• public int getWidth()
Menghasilkan lebar objek gambar yang ada.
• public boolean isMutable()
Menghasilkan nilai true jika objek gambar bersifat mutable.
BAB 5
KESIMPULAN
J2ME atau Java Micro Edition adalah sebuah teknologi yang telah banyak
digunakan dalam pengembangan aplikasi pada ponsel dewasa ini, mulai dari aplikasi yang
berupa permainan sampai dengan aplikasi ponsel sebagai pendukung aplikasi yang lebih
besar seperti enterprise.
Membuat aplikasi J2ME tidak memerlukan banyak software yang rumit atau besar,
salah satu software yang pasti diperlukan adalah J2SE SDK/JDK, dalam J2SE SDK/JDK
ini terdapat runtime dan library untuk program Java secara umum termasuk juga untuk
J2ME, pada saat artikel ini ditulis telah ada J2SE SDK v1.4.2.
Untuk menulis source-code J2ME, maka kita memerlukan sebuah J2ME IDE (integrated
development environment), ada beberapa pilihan IDE yang diantaranya adalah Netbean,
Sun One Java Studio Mobility, CodeWarrior dan notepad (atau text editor lainnya),
untungnya semua software IDE yang disebutkan ini dapat di download gratis di website
resmi masing masing perusahaan.
Jadi untuk membuat program J2ME maka pihak developer tidak perlu
mengeluarkan uang sama sekali untuk membeli software IDE. pada artikel ini yang diulas
adalah IDE dari Netbean v4.1 dengan tambahan Netbean Mobility Pack v4.1, tambahan ini
diperlukan untuk membuat aplikasi J2ME, karena jika hanya dengan Netbean v4.1 hanya
dapat membuat aplikasi Java saja, Netbean Mobility Pack adalah module-module aplikasi
J2ME dan emulator device untuk testing dalam PC. IDE lainnya boleh dicoba tapi
dianjurkan memakai Netbean v4.1 karena versi ini sangat mudah dioperasikan dan
dirasakan cukup cepat dibanding IDE lainnya dalam hal loading, compiling, running dan
debugging..
GUI dapat dibuat dengan komponen standar yang sudah disediakan (dalam package
lcdui). List, Textbox, dll. Java akan secara otomatis menangani perbedaan antar device
(ukuran layar, warna, dll) dan juga dapat dibuat dengan canvas.
Sekian….
dan Terima
Kasih