Dokumen ini membahas tentang Java 2 Micro Edition (J2ME). J2ME digunakan untuk mengembangkan aplikasi Java untuk perangkat genggam seperti ponsel pintar dan PDA. Dokumen ini juga menjelaskan karakteristik bahasa pemrograman Java serta komponen-komponen penting Java seperti Java Virtual Machine dan Java Application Programming Interface."
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...
J2ME Java
1. JAVA 2 MICRO EDITION
Andino Maseleno
Diterbitkan pertama kali tahun 2003
2. Bab 1 – Pemrograman Java
Bab 1
Pemrograman Java
Bahasa Java awalnya bernama Oak, yakni bagian dari projek Green yang dikembangkan
oleh Sun Microsystem untuk memprogram perangkat-perangkat elektronik rumah tangga semacam
televisi. Namun pada perkembangannya, bahasa Oak ini menjadi bahasa yang bisa digunakan untuk
pemrograman secara umum dan dikenal menjadi bahasa Java saat ini.
Java sebagai bahasa pemrograman dikenal sebagai bahasa pemrograman tingkat tinggi
dengan kriteria sebagai berikut:
1. Sederhana(Simple)
Java dirancang untuk mudah dipelajari, terutama bagi programmer-programmer yang telah
mengenal C/C++ akan mudah sekali untuk berpindah ke Java.
2. Berorientasi Objek(Object Oriented)
Rancangan berorientasi objek merupakan suatu teknik yang memusatkan rancangan pada
data(objek) dan interface. Java merupakan bahasa pemrograman berorientasi objek.
3. Terdistribusi(Distributed)
Java memiliki library rutin yang luas untuk dirangkai pada protokol TCP/IP dengan mudah.
4. Kuat(Robust)
Java dirancang sebagai bahasa pemrograman yang handal. Java dimaksudkan untuk membuat
suatu program yang benar-benar dapat dipercaya dalam berbagi hal. Java banyak menekankan
pada pengecekan awal untuk kemungkinan terjadinya masalah, pengecekan pada saat run time
dan mengurangi kemungkinan timbulnya kesalahan(error).
5. Aman(Secure)
Java dirancang sebagai bahasa pemrograman yang aman. Java membuat suatu sistem yang
mekanisme keamanannya benar-benar sulit dikecoh.
6. Netral Arsitektur(Arsitecture Neutral)
Java Compiler yang digunakan untuk mengkompilasi kode program Java dirancang untuk
menghasilkan kode yang netral terhadap semua arsitektur perangkat keras.
7. Portable
Dengan semboyan write once run everywhere, Java dirancang untuk dapat dijalankan di semua
platform.
1
Andino Maseleno
3. Bab 1 – Pemrograman Java
8. Interpreter
Interpreter Java dapat mengeksekusi kode byte Java secara langsung pada komputer-komputer
yang memiliki interpreter.
9. Kinerja Tinggi(High Performance)
Java dirancang untuk menghasilkan aplikasi dengan performansi yang terbaik.
10. Multithreaded
Multithreading adalah kemampuan sebuah program untuk melakukan lebih dari satu pekerjaan
sekaligus.
11. Dinamis
Java adalah bahasa pemrograman yang dinamis. Java dirancang untuk beradaptasi dengan
lingkungan yang terus berkembang.
Alasan Java digunakan untuk aplikasi wireless
Ada beberapa alasan mengapa harus Java dipilih untuk aplikasi komunikasi bergerak:
1. Java merupakan bahasa pemrograman yang aman. Hal ini disebabkan karena kode Java harus
selalu dieksekusi dengan Java Virtual Machine(JVM), yang menyediakan lingkungan yang
aman untuk eksekusi kode yang telah di-download. Sebuah aplikasi biner dapat mengacaukan
sebuah peralatan(misalnya tampilan bue screen pada handphone) namun aplikasi Java, dalam
hal yang paling buruk, hanya dapat mengacaukan Virtual Machine-nya saja.
2. Bahasa pemrograman Java adalah bahasa yang kokoh. Penggunaan Garbage Collector akan
mengurangi waktu yang diperlukan oleh programer untuk menemukan kebocoran dalam
penggunaan memori. Demikian pula penggunaan mekanisme exception pada Java mampu
meningkatkan kemampuan programmer dalam membuat aplikasi yang kokoh.
3. Portabilitas Java sangat berguna dalam aplikasi-aplikasi wireless. Pertama, dengan menulis
sebuah program saja, aplikasi tersebut dapat dijalankan di berbagai peralatan. Alasan kedua
karena aplikasi-aplikasi tersebut dapat dikirimkan kesebuah peralatan melalui jaringan
wireless(proses ini sering dinamakan Over-the-air, atau OTA provisioning).
Java Virtual Machine (JVM)
Kode program Java dapat ditulis menggunakan editor teks seperti Notepad, Textpad
maupun JCreator dan lain sebagainya. Java compiler yang digunakan untuk mengkompilasi kode
2
Andino Maseleno
4. Bab 1 – Pemrograman Java
program Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkat
keras(hardware) yang disebut sebagai Java bytecode(*.class).
Java Virtual Machine (JVM) menjadi bagian dari teknologi Java yang menyediakan media
untuk menjalankan aplikasi Java(Java bytecode). Java bytecode dapat dianggap sebagai kode-kode
mesin dari JVM. Selanjutnya JVM akan menginterpretasikan kode-kode tersebut menjadi kode
native atau kode mesin dari arsitektur yang bersangkutan. Java dirancang untuk dapat dijalankan di
semua platform baik itu Linux, Windows, Netware maupun Macintosh serta dapat dijalankan pada
arsitektur perangkat keras yang berbeda, seperti Intel, AMD, Sun Sparc, PowerPC dan lain
sebagainya. Jadi, aplikasi Java tidak perlu dikompilasi ulang jika telah dikompilasi di suatu
platform dan akan dijalankan di platform yang berbeda dengan platform saat dikompilasi, karena
aplikasi Java dijalankan di atas JVM.
*.java
Java
Compiler
*.class
Java Interpreter
Native Code
Executed
Computer
Gambar 1.1 Proses Kompilasi Kode Java
Java Application Programming Interface (Java API)
Ada berbagai fitur yang ditawarkan oleh Java API untuk mengembangkan aplikasi Java, antara lain
sebagai berikut :
1. Applet
Java Applet merupakan program Java yang berjalan di atas browser. Penggunaan applet ini
akan membuat halaman HTML lebih dinamis dan menarik.
2. Java Networking
3
Andino Maseleno
5. Bab 1 – Pemrograman Java
Java Networking merupakan sekumpulan API yang menyediakan fungsi-fungsi untuk aplikasi
jaringan. Java Networking menyediakan akses untuk TCP, UDP, IP Address dan URL. Java
Networking tidak menyediakan akses untuk ICMP, karena alasan sekuritas dan pada kondisi
umum hanya administrator yang dapat memanfaatkan protokol ICMP.
3. Java Database Connectivity(JDBC)
JDBC menyediakan sekumpulan API untuk mengatur keamanan mengakses database seperti
Oracle, MySQL, PostgreSQL, Microsoft SQL Server.
4. Java Server Pages(JSP)
JSP adalah suatu teknologi web berbasis bahasa pemrograman Java dan berjalan pada platform
Java. JSP merupakan pengembangan dari Servlet serta merupakan bagian dari teknologi Java 2
Platform, Enterprise Edition(J2EE).
5. Java Card
Java Card digunakan untuk aplikasi-aplikasi pada smart card, sebagai contoh yaitu SIM Card
pada handphone.
Teknologi Java
1. Java 2 Platform, Standard Edition (J2SETM)
Platform digunakan untuk menjalankan dan mengembangkan aplikasi Java pada level
Personal Computer (PC). Platform ini berisi class-class inti pada Java dan Graphical User Interface
(GUI).
2. Java 2 Platform, Micro Edition (J2METM)
Platform ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java
pada handheld devices atau perangkat-perangkat semacam handphone, Personal Digital
Assistance(PDA) dan PocketPC.
3. Java 2 Platform, Enterprise Edition (J2EETM)
Platform ini berupa paket yang berisi class-class dan interface-interface yang digunakan
untuk menjalankan dan mengembangkan aplikasi Java berbasis web, seperti class-class Servlet,
Java Server Pages(JSP) dan Enterprise Java Beans(EJB) serta Java CORBA.
4
Andino Maseleno
6. Bab 1 – Pemrograman Java
Lingkungan kerja teknologi Java dapat digambarkan seperti gambar 1.2 dibawah ini:
Gambar 1.2 Platform Java 2
Variabel pada Java
Variabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah program
dengan tipe tertentu. Pada dasarnya ada dua macam tipe variabel data dalam bahasa Java, yakni tipe
primitif dan tipe reference. Tabel di bawah ini menunjukkan tipe primitif pada Java.
Tabel 2.1 Tipe primitif pada Java
Keyword Description Size/Format
(integers)
byte Byte-length integer 8-bit two's complement
short Short integer 16-bit two's complement
int Integer 32-bit two's complement
long Long integer 64-bit two's complement
(real numbers)
float Single-precision floating point 32-bit IEEE 754
double Double-precision floating point 64-bit IEEE 754
(other types)
5
Andino Maseleno
7. Bab 1 – Pemrograman Java
char A single character 16-bit Unicode character
boolean A boolean value (true or false) true or false
Contoh program
//MaxVariablesDemo.java
public class MaxVariablesDemo {
public static void main(String args[]) {
// integer
byte largestByte = Byte.MAX_VALUE;
short largestShort = Short.MAX_VALUE;
int largestInteger = Integer.MAX_VALUE;
long largestLong = Long.MAX_VALUE;
// real
float largestFloat = Float.MAX_VALUE;
double largestDouble = Double.MAX_VALUE;
char aChar = 'S';
boolean aBoolean = true;
System.out.println("Nilai terbesar byte :" + largestByte);
System.out.println("Nilai terbesar short :“ + largestShort);
System.out.println("Nilai terbesar integer : " + largestInteger);
System.out.println("Nilai terbesar long : " + largestLong);
System.out.println("Nilai terbesar float : " + largestFloat);
System.out.println("Nilai terbesar double : " + largestDouble);
if (Character.isUpperCase(aChar)) {
System.out.println("The character " + aChar + " is upper case.");
} else {
System.out.println("The character " + aChar + " is lower case.");
}
System.out.println("Nilai boolean : " + aBoolean);
}
}
Sedangkan tipe data variabel berupa reference terdiri atas tipe variabel data:
tipe class
tipe array
tipe interface
Operator pada Java
Operator pada Java dibedakan menjadi beberapa jenis, yaitu:
Operator Aritmetika
6
Andino Maseleno
8. Bab 1 – Pemrograman Java
Operator Relasional
Operator Kondisional
Operator Shift dan Lojik
Operator Assignment
Operator lainnya
Operator Aritmetika
Tabel 2.2 Operator aritmatika
Operator Penggunaan Deskripsi
+ op1 + op2 Menambahkan op1 dengan op2
- op1 - op2 Megurangkan op1 dengan op2
* op1 * op2 Mengalikan op1 dengan op2
/ op1 / op2 Membagi op1 dengan op2
% op1 % op2 Menghasilkan sisa hasil bagi antara op1 dengan op2
Contoh program
7
Andino Maseleno
9. Bab 1 – Pemrograman Java
//ArithmeticDemo.java
public class ArithmeticDemo {
public static void main(String[] args) {
int i = 37;
int j = 42;
double x = 27.475;
double y = 7.22;
System.out.println("Nilai variabel...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" x = " + x);
System.out.println(" y = " + y);
System.out.println("Penambahan...");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));
System.out.println("Pengurangan...");
System.out.println(" i - j = " + (i - j));
System.out.println(" x - y = " + (x - y));
System.out.println("Perkalian...");
System.out.println(" i * j = " + (i * j));
System.out.println(" x * y = " + (x * y));
System.out.println("Pembagian...");
System.out.println(" i / j = " + (i / j));
System.out.println(" x / y = " + (x / y));
System.out.println("Sisa hasil bagi...");
System.out.println(" i % j = " + (i % j));
System.out.println(" x % y = " + (x % y));
//mixing types
System.out.println("Mixing types...");
System.out.println(" j + y = " + (j + y));
System.out.println(" i * x = " + (i * x));
}
}
8
Andino Maseleno
10. Bab 1 – Pemrograman Java
//SortDemo.java
public class SortDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076,
2000, 8, 622, 127 };
for (int i = arrayOfInts.length; --i >= 0; ) {
for (int j = 0; j < i; j++) {
if (arrayOfInts[j] > arrayOfInts[j+1]) {
int temp = arrayOfInts[j];
arrayOfInts[j] = arrayOfInts[j+1];
arrayOfInts[j+1] = temp;
}
}
}
for (int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + " ");
}
System.out.println();
}
}
Operator Increment/Decrement
Tabel 2.3 Operator increment/decrement
Operator Penggunaam Deskripsi
++ op++ op dinaikkan nilainya 1 setelah dilakukan operasi pada op
++ ++op op dinaikkan nilainya 1 sebelum dilakukan operasi pada op
-- op-- op diturunkan nilainya 1 sebelum dilakukan operasi pada op
-- --op op diturunkan nilainya 1 setelah dilakukan operasi pada op
Operator Relasional
Operator relasional pada Java dapat digunakan untuk membandingkan antara dua variabel data,
lebih lengkapnya dapat dilihat dalam tabel berikut ini:
Tabel 2.4 Operator relasional
Operator Penggunaan Deskripsi
op1 > Menghasilkan true jika op1 lebih besar dari
>
op2 op2
9
Andino Maseleno
11. Bab 1 – Pemrograman Java
op1 >= Menghasilkan true jika op1 lebih besar atau
>=
op2 sama dengan dari op2
op1 < Menghasilkan true jika op1 lebih kecil dari
<
op2 op2
op1 <= Menghasilkan true jika op1 lebih kecil atau
<=
op2 sama dengan dari op2
op1 ==
== Menghasilkan true jika op1 sama dengan op2
op2
op1 != Menghasilkan true jika op1 tidak sama dengan
!=
op2 op2
Contoh program
10
Andino Maseleno
12. Bab 1 – Pemrograman Java
/RelationalDemo.java
public class RelationalDemo {
public static void main(String[] args) {
int i = 37;
int j = 42;
int k = 42;
System.out.println("Nilai variabel...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" k = " + k);
System.out.println("Lebih besar dari...");
System.out.println(" i > j = " + (i > j));
System.out.println(" j > i = " + (j > i));
System.out.println(" k > j = " + (k > j));
System.out.println("Lebih besar atau sama dengan...");
System.out.println(" i >= j = " + (i >= j)); //false
System.out.println(" j >= i = " + (j >= i)); //true
System.out.println(" k >= j = " + (k >= j)); //true
System.out.println("Kurang dari...");
System.out.println(" i < j = " + (i < j)); //true
System.out.println(" j < i = " + (j < i)); //false
System.out.println(" k < j = " + (k < j)); //false
System.out.println("Kurang dari atau sama dengan...");
System.out.println(" i <= j = " + (i <= j)); //true
System.out.println(" j <= i = " + (j <= i)); //false
System.out.println(" k <= j = " + (k <= j)); //true
System.out.println("Sama dengan...");
System.out.println(" i == j = " + (i == j)); //false
System.out.println(" k == j = " + (k == j)); //true
System.out.println("Tidak sama dengan...");
System.out.println(" i != j = " + (i != j)); //true
System.out.println(" k != j = " + (k != j)); //false
}
}
Operator Kondisional
Operator kondisional dalam Java ada enam macam sebagaimana digambarkan pada tabel di bawah:
Tabel 2.5 Operator kondisional
Operator Penggunaan Deskripsi
op1 && Menghasilkan true jika op1 dan op2, keduanya
&&
op2 bernilai boolean true
11
Andino Maseleno
13. Bab 1 – Pemrograman Java
op1 || Menghasilkan true jika op1 atau op2, salah satunya bernilai boolean
||
op2 true
Menghasilkan true jika op bernilai boolean
! ! op
false
op1 & Bitwise AND, menghasilkan true jika op1 dan
&
op2 op2 bernilai true
op1 | Bitwise OR, menghasilkan true jika op1 atau op2 salah satunya
|
op2 bernilai true
op1 ^ Menghasilkan true jika salah satu diantara op1 atau op2 bernilai
^
op2 true, namun tidak keduanya
Operator Shift dan Lojik
Tabel 2.6 Operator shift dan lojik
Operator Penggunaan Deskripsi
>> op1 >> op2 Menggeser bit op1 ke kanan sejauh op2
<< op1 << op2 Menggeser bit op1 ke kiri sejauh op2
>>> op1 >>> op2 Menggeser bit op1 ke kiri sejauh op2
Operator Bitwise
Operator bitwise dalam Java juga digunakan untuk memanipulasi bit.
Tabel 2.7 Operator Bitwise
Operator Penggunaan Deskripsi
& op1 & op2 Bitwise AND
| op1 | op2 Bitwise OR
^ op1 ^ op2 Bitwise xor
~ ~op2 Bitwise complement
12
Andino Maseleno
14. Bab 1 – Pemrograman Java
Bitwise AND
Bitwise AND akan menghasilkan bit “1” jika kedua operator bernilai bit “1”.
Tabel 2.8 Bitwise AND
op1 op2 op1 & op2
0 0 0
0 1 0
1 0 0
1 1 1
Bitwise OR
Bitwise OR akan menghasilkan bit “1” jika salah satu operator bernilai bit “1”.
Tabel 2.9 Bitwise OR
op1 op2 op1 | op2
0 0 0
0 1 1
1 0 1
1 1 1
Bitwise XOR
Bitwise XOR akan menghasilkan bit “1” jika kedua operator memiliki nilai bit yang berbeda
Tabel 2.10 Bitwise XOR
op1 op2 op1^op2
0 0 0
0 1 1
1 0 1
1 1 0
Contoh program
13
Andino Maseleno
15. Bab 1 – Pemrograman Java
//BitwiseDemo.java
public class BitwiseDemo {
static final int VISIBLE = 1;
static final int DRAGGABLE = 2;
static final int SELECTABLE = 4;
static final int EDITABLE = 8;
public static void main(String[] args)
{
int flags = 0;
flags = flags | VISIBLE;
flags = flags | DRAGGABLE;
if ((flags & VISIBLE) == VISIBLE) {
if ((flags & DRAGGABLE) == DRAGGABLE) {
System.out.println("Flags are Visible and Draggable.");
}
}
flags = flags | EDITABLE;
if ((flags & EDITABLE) == EDITABLE) {
System.out.println("Flags are now also Editable.");
}
} }
Operator Assignment
Operator assignment pada Java digunakan untuk memberikan sebuah nilai ke sebuah variabel.
Operator assignment hanya berupa „=‟,
Tabel 2.11 Operator Assignment
Operator Penggunaan Ekivalen dengan
+= op1 += op2 op1 = op1 + op2
-= op1 -= op2 op1 = op1 - op2
*= op1 *= op2 op1 = op1 * op2
/= op1 /= op2 op1 = op1 / op2
%= op1 %= op2 op1 = op1 % op2
&= op1 &= op2 op1 = op1 & op2
|= op1 |= op2 op1 = op1 | op2
^= op1 ^= op2 op1 = op1 ^ op2
<<= op1 <<= op2 op1 = op1 << op2
14
Andino Maseleno
16. Bab 1 – Pemrograman Java
>>= op1 >>= op2 op1 = op1 >> op2
>>>= op1 >>>= op2 op1 = op1 >>> op2
Operator Lainnya
Tabel 2.12 Operator lainnya
Operator Deskripsi
?: Shortcut if-else statement
[] Used to declare arrays, create arrays, and access array elements
. Used to form qualified names
( params ) Delimits a comma-separated list of parameters
( type ) Casts (converts) a value to the specified type
new Creates a new object or a new array
instanceof Determines whether its first operand is an instance of its second operand
Contoh program
//ConditionalOp.java
public class ConditionalOp
{
public static void main(String args[])
{
int nBuku = 1; // jumlah buku
System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ?
"." : "s."));
nBuku++; // Increment jumlah buku
System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ?
"." : "s."));
}
}
Controlflow pada Java
Operasi Kondisional
If-Else
Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah
kondisi tertentu. Sintaks penggunaannya adalah :
15
Andino Maseleno
17. Bab 1 – Pemrograman Java
if (kondisi){
statement
}
Contoh program
//IfDemo1.java
class ifDemo1{
public static void main(String args[]){
int idx = 2;
if(idx>9){
System.out.println(“Idx lebih besar dari 10”);
}
}
}
Ada kalanya kita menginginkan dua pencabangan, yakni jika suatu kondisi terpenuhi, lakukan aksi
A, jika tidak, lakukan aksi B. Dua percabangan ini dimungkinkan dengan menggunakan if-else()
sebagai berikut :
if (kondisi){
statement1
}else{
statement2
}
Pada pernyataan di atas, jika kondisi bernilai true, statement 1 akan dijalankan. Sebaliknya, jika
kondisi bernilai false, statement 2 yang akan dijalankan.
Contoh program
//IfDemo2.java
class ifDemo2{
public static void main(String args[]){
int idx=0;
if(idx>9)
System.out.println(“Idx lebih besar dari 9”);
}else{
System.out.println(“Idx tidak lebih besar dari 10”);
}
}
}
16
Andino Maseleno
18. Bab 1 – Pemrograman Java
//NumberCheck1.java
public class NumberCheck1
{
public static void main(String[] args)
{
int number = 0;
number = 1+(int)(100*Math.random());
if(number%2 == 0)
System.out.println("Anda memperoleh bilangan genap, " + number);
else
System.out.println("Anda memperoleh bilangan ganjil, " + number);
}
}
//NumberCheck2.java
public class NumberCheck2
{
public static void main(String[] args)
{
int number = 0;
number = 1+(int)(100*Math.random());
if(number%2 == 0)
{
if(number < 50)
System.out.println("Anda memperoleh bilangan genap < 50, " + number);
}
else
System.out.println("Anda memperleh bilangan ganjil, " + number); // It is
odd
}
}
17
Andino Maseleno
19. Bab 1 – Pemrograman Java
//LetterCheck1.java
public class LetterCheck1
{
public static void main(String args[])
{
char symbol = 'A';
symbol = (char)(128.0*Math.random());
if(symbol >= 'A')
{
if(symbol <= 'Z')
System.out.println("Anda memiliki huruf besar " + symbol);
else
if(symbol >= 'a')
if(symbol <= 'z')
System.out.println("Anda memiliki huruf kecil " + symbol);
else
System.out.println(
"Kode lebih besar dari a, tetapi ini bukan huruf");
else
System.out.println(
"Kode lebih kecil dari a dan bukan huruf");
}
else
System.out.println("Kode lebih kecil dari A dan bukan huruf!!");
}
}
//LetterCheck2.java
public class LetterCheck2
{
public static void main(String args[])
{
char symbol = 'A';
symbol = (char)(128.0*Math.random());
if(symbol >= 'A' && symbol <= 'Z')
System.out.println("Anda memiliki huruf besar " + symbol);
else
if(symbol >= 'a' && symbol <= 'z')
System.out.println("Anda memiliki huruf kecil " + symbol);
else
System.out.println("Kode ini bukan huruf!!");
}
}
18
Andino Maseleno
20. Bab 1 – Pemrograman Java
//LetterCheck3.java
public class LetterCheck3
{
public static void main(String args[])
{
char symbol = 'A';
symbol = (char)(128.0*Math.random());
if(Character.isUpperCase(symbol))
System.out.println("Anda memiliki huruf besar " + symbol);
else
if(Character.isLowerCase(symbol))
System.out.println("Anda memiliki huruf kecil " + symbol);
else
System.out.println("Kode ini bukan huruf!!");
}
}
Switch-Case
Statement switch-case digunakan untuk mengeksekusi sebuah blok jiak memenuhi sebuah kondisi
tertentu.
Contoh program
//SwitchDemo.java
public class SwitchDemo {
public static void main(String[] args) {
int month = 8;
switch (month) {
case 1: System.out.println("Januari"); break;
case 2: System.out.println("Februari"); break;
case 3: System.out.println("Maret"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("Mei"); break;
case 6: System.out.println("Juni"); break;
case 7: System.out.println("Juli"); break;
case 8: System.out.println("Agustus"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("Oktober"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("Desember"); break;
}
}
}
19
Andino Maseleno
21. Bab 1 – Pemrograman Java
//SwitchDemo2.java
public class SwitchDemo2 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0))
|| (year % 400 == 0) )
numDays = 29;
else
numDays = 28;
break;
}
System.out.println("Jumlah hari = " + numDays);
}
}
Operasi Pengulangan
While
Statement while digunakan untuk mengeksekusi sebuah blok secara berulang selama memenuhi
kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut:
while (ekspresi) {
statement
}
Pada pernyataan di atas, selama ekspresi menghasilkan nilai true, statement yang ada akan
dieksekusi secara terus menerus.
20
Andino Maseleno
22. Bab 1 – Pemrograman Java
Contoh program
//WhileDemo.java
class WhileDemo{
public static void main(String args[]){
String str1 = “Welcome”;
int idx = 0;
while(idx<str1.length()){
System.out.println(“Karakter ke : “ +idx+”=”+str1.charAt(idx));
idx++;
}
}
}
//WhileLoop.java
public class WhileLoop
{
public static void main(String[] args)
{
int limit = 20;
int sum = 0;
int i = 1;
while(i <= limit)
sum += i++;
System.out.println("sum = " + sum);
}
}
Do-While
Sama halnya dengan while, statement do-while digunakan untuk mengeksekusi sebuah blok secara
berulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while, ekspresi diperiksa pada
saat awal, jadi ada kemungkinan blok statement dalam while tidak pernah dieksekusi. Pada
penggunaan do-whilw, ekspresi tidak diperiksa pada saat awal eksekusi, jadi minimal blok
statement do-while akan dieksekusi sekali. Sintaks penggunaannya sebagai berikut:
do{
statement
}while (ekspresi) {
Contoh program
21
Andino Maseleno
23. Bab 1 – Pemrograman Java
//DoWhileLoop.java
public class DoWhileLoop
{
public static void main(String[] args)
{
int limit = 20;
int sum = 0;
int i = 1;
do
{
sum += i;
i++;
}
while(i <= limit);
System.out.println("sum = " + sum);
}
}
For
Statement for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuah
range tertentu. Sintaks penggunaannya adalah sebagai berikut:
for (inisialisasi;terminasi;increment) {
statement
}
Increment dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasi
digunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresi
yang akan dieksekusi setiap selesai melakukan satu looping (pengulangan). Perlu diperhatikan
bahwa ketiga bagian di dalam for() bersifat opsional, jadi boleh tidak ada. Namun, jika ketiga
bagian di atas kosong, akan menyebabkan terjadinya pengulangan tanpa henti (loop forever).
Contoh program
//ForLoop1.java
class ForLoop1{
public static void main(String args[]){
for (int idx=0;idx<10;idx++){
System.out.println(idx +” ”);
}
System.out.println(“”);
}
}
22
Andino Maseleno
24. Bab 1 – Pemrograman Java
//ForLoop2.java
public class ForLoop2
{
public static void main(String[] args)
{
int limit = 20;
int sum = 0;
for(int i = 1; i <= limit; i++)
sum += i;
System.out.println("sum = " +sum);
}
}
//ForLoop3.java
class ForLoop3{
public static void main(String args[]){
int idx=0;
for(;idx<10;){
System.out.println(idx +” “);
idx++;
}
System.out.println(“”);
}
}
//ForLoop4.java
public class ForLoop4
{
public static void main(String[] args)
{
int limit = 20;
int sum = 0;
for(double radius = 1.0; radius <= 2.0; radius += 0.2)
{
System.out.println("radius = " + radius + " area = " +
Math.PI*radius*radius);
}
}
}
23
Andino Maseleno
25. Bab 1 – Pemrograman Java
//Factorial1.java
public class Factorial1
{
public static void main(String[] args)
{
long limit = 20;
long factorial = 1;
for(int i = 1; i <= limit; i++)
{
factorial = 1;
int j =2;
while(j <= i)
factorial *= j++;
System.out.println(i + "!" + " adalah " + factorial);
}
}
}
//Factorial2.java
public class Factorial2
{
public static void main(String[] args)
{
long limit = 20;
long factorial = 1;
OuterLoop:
for(int i = 1; i <= limit; i++)
{
factorial = 1;
for(int j = 2; j <= i; j++)
{
if(i > 10 && i % 2 == 1)
continue OuterLoop;
factorial *= j;
}
System.out.println(i + "!" + " adalah " + factorial);
}
}
}
24
Andino Maseleno
26. Bab 1 – Pemrograman Java
//BilanganPrima.java
public class BilanganPrima
{
public static void main(String[] args)
{
int nValues = 50;
boolean isPrime = true;
for(int i = 2; i <= nValues; i++)
{
isPrime=true;
for(int j = 2; j < i; j++)
{
if(i % j == 0)
{
isPrime = false;
break;
}
}
if(isPrime)
System.out.println(i);
}
}
}
25
Andino Maseleno
27. Bab 2 – Java 2 Micro Edition
Bab 2
Java 2 Micro Edition
Java 2 Micro Edition (J2ME) merupakan bagian dari teknologi Java 2, seperti yang terlihat
pada Gambar 2.1, yang digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java
pada handheld devices atau perangkat-perangkat semacam ponsel, Palm, PDA, dan PocketPC.
Gambar 2.1 Java 2 Flatform
Java 2 micro edition berguna untuk membangun sebuah aplikasi pada peralatan dengan
jumlah memori dan kapasitas penyimpanan yang terbatas, serta kemampuan user interface yang
terbatas seperti perangkat komunikasi bergerak yaitu handphone dan PDA, yang memiliki
karakteristik berbeda dengan sebuah personal komputer.
Java 2 micro edition terdiri atas komponen-komponen sebagai berikut:
1. Java Virtual Machine (JVM)
JVM yang ada pada paket J2ME dirancang agar bisa dijalankan pada berbagai perangkat
handheld yang kompatibel dengan java dan komponen ini untuk menjalankan program-program
java pada emulator.
2. Java API (Application Programming Interface)
Komponen ini kumpulan dari librari untuk menjalankan dan mengembangkan program java
pada handheld devices, misalnya kelas-kelas java untuk manipulasi layer ponsel, mendeteksi
26
Andino Maseleno
28. Bab 2 – Java 2 Micro Edition
masukan tombol ponsel dan menyimpan file
3. Tools lain untuk pengembangan aplikasi java, semacam emulator Motorolla.
Java 2 micro edition memiliki dua jenis aplikasi yaitu:
1. Walled garden application, yaitu aplikasi yang berdiri sendiri atau stand-alone pada handphone
tanpa perlu mengakses sumber data eksternal melalui jaringan pembawa atau carrier network.
contoh aplikasi ini adalah kalkulator, organizer.
2. Network aware application. Aplikasi ini memiliki kemampuan untuk mengakses sumber data
eksternal. contoh aplikasi e-mail yang berada didalam handphone.
Java 2 Micro Edition dibagi menjadi dua buah bagian yang dikenal dengan istilah
configuration dan profiles, seperti yang terlihat pada Gambar 2.2. Configuration adalah spesifikasi
yang menjelaskan tentang sebuah virtual machine dan Application Programming Interface dasar
yang dapat digunakan dalam class-class tertentu. Profile menyediakan implementasi-implementasi
tambahan yang spesifik dari sebuah handheld devices. Sebuah profile dibangun dalam sebuah
configuration, namun menambahkan beberapa Application Programming Interface khusus agar
dihasilkan sebuah lingkungan yang lengkap untuk membangun aplikasi.
Gambar 2.2 Configuration dan Profile pada J2ME Application
Java 2 Micro Edition Configuration
Java 2 micro edition configuration mendefinisikan lingkungan kerja J2ME runtime. karena
setiap handheld devices memiliki fitur berbeda, J2ME configuration dirancang untuk menyediakan
librari standar yang mengimplementasikan fitur standar dari sebuah handheld devices. lingkungan
27
Andino Maseleno
29. Bab 2 – Java 2 Micro Edition
kerja J2ME configuration yang dimaksud meliputi java virtual machine (JVM) digunakan untuk
menjalankan program java, dan java virtual machine pada J2ME yang berbeda dengan J2ME pada
java development kit (JDK) karena hanya fitur-fitur penting berkaitan dengan perangkat wireless
yang diimplementasikan.
Ada dua kategori J2ME configuration saat ini yaitu:
1. CLDC (Connected Limited Device Configuration).
Kategori ini umumnya digunakan untuk aplikasi java pada handphone seperti Nokia, Samsung,
Motorola, dan PDA (Personal Digital Assistants) Umumnya peralatan wireless untuk perangkat
tersebut memiliki kapasitas memori yang kecil berukuran 160-512 KiloBytes dan dengan
koneksi jaringan yang tidak tetap
2. CDC (Connected Device Configuration)
Kategori ini umumnya digunakan untuk aplikasi java pada perangkat-perangkat handheld
devices dengan kapasitas memori yang lebih besar berukuran minimal 2 Mbytes dan dengan
koneksi jaringan yang lebih kokoh contohnya internet television, nokia communicator, TV pada
mobil dan lain-lain.
Perbedaan antara CLDC dan CDC dapat dilihat pada tabel 2.1
Tabel 2.1 Perbedaan CLDC dan CDC
CLDC CDC
Mengimplementasikan subset dari J2SE Mengimplementasikan seluruh fitur pada J2SE
Processor 32 Bit
Processor 16 Bit JVM yang digunakan dikenal dengan nama
JVM yang digunakan dikenal dengan nama connected virtual machine (CVM)
Kilobyte virtual machine (KVM)
Java 2 Micro Edition Profile
J2ME profile menyediakan implementasi-implementasi tambahan yang sangat spesifik dari
sebuah handheld devices. contohnya sebuah ponsel memiliki kemampuan standar dari sebuah
ponsel yaitu untuk berkomunikasi, namun setiap ponsel memiliki fitur-fitur tersendiri misalnya
Siemens bisa menyimpan mp3 dan nokia memiliki game dan lain sebagainya, kemampuan standar
itulah yang diimplementasikan oleh J2ME configuration sedangkan kemampuan atau fitur lainnya
diimplementasikan oleh J2ME profile. Jadi sebuah profile dibangun dalam sebuah configuration
28
Andino Maseleno
30. Bab 2 – Java 2 Micro Edition
namun menambahkan beberapa Application Programming Interface (API) khusus agar dihasilkan
sebuah lingkungan yang lengkap untuk membangun aplikasi.
Ada lima kategori J2ME profile saat ini yaitu Mobile Information Device Profile (MIDP),
Foundation Profile (FP), Personal Profile, RMI Profile, Personal Digital Assistance Profile.
Connected Limited Device Configuration (CLDC)
CLDC digunakan untuk implementasikan program java pada perangkat-perangkat keras dengan
ukuran memori yang sangat terbatas, akibatnya fitur-fitur yang kurang penting untuk
diimplementasikan dalam handheld devices yang bersangkutan dari java 2 harus dibuang. Fitur-fitur
yang dibuang tersebut antara lain:
1. Tidak ada dukungan untuk floating point
Kelas-kelas untuk perhitungan floating point, yakni java.lang.Float dan java.lang.Double
dibuang dari CLDC.
2. Tidak ada dukungan untuk finalisasi objek
Garbage collector digunakan untuk “bersih-bersih memori” membuang fungsi finalize pada
kelas java.lang.Object, sekalipun fungsi ini penting pada Java 2.
3. Tidak ada dukungan untuk JNI (Java Native Interface)
Kelas JNI yang memungkinkan Java mengakses library yang dibuat dengan bahasa selain Java
seperti C, C++, dan Basic , tidak didukung oleh CLDC.
4. Penanganan kesalahan/exception yang terbatas
CLDC hanya mendefisinikan tiga kelas untuk penanganan kesalahan / exception yaitu kelas
java.lang.Error, Kelas java.lang.OutOfMemory, Kelas java.lang.virtual Machine Error.
Kelas-kelas standar bawaan java 2 standard edition (J2SE) yang didukung oleh CLDC adalah
sebagai berikut:
29
Andino Maseleno
31. Bab 2 – Java 2 Micro Edition
Tabel 2.2 Kelas-kelas pada J2SE yang ada pada CLDC.
Nama Paket (Java Package) Nama Kelas (Java Class)
Java.io DataInput
DataOutput
DataInputStream
InputStream
DataOutputStream
OutputStream
InputStreamReader
OutputStreamWriter
Reader
Writer
EOFException
IOException
PrintStream
InterruptedException
UnsupportedEncodingException
UTFDataFormatException
ByteArrayInputStream
ByteArrayOutputStream
30
Andino Maseleno
32. Bab 2 – Java 2 Micro Edition
Java.lang ArithmeticException
StringBuffer
SecurityException
Exception
InterruptedException
Runnable
RuntimeException
Runtime
NullpointerException
Character
InstantiationException
Boolean
ClassCastException
Integer
ClassNotFoundException
System
IllegalAccessException
Object
IllegalArgumentException
Byte
NumberFormatException
Thread
ArrayStoreException
String
OutOfMemoryError
Throwable
VirtualMachineError
Error
IllegalThreadStateException
Long
IndexOutOfBoundException
Math
IllegalMonitorStateException
Class 31
Andino Maseleno NegativeArraySizeException
33. Bab 2 – Java 2 Micro Edition
Java.util Calendar
Date
Enumeration
Hastable
Random
Stack
Time
Vector
EmptyStackException
NoSuchElementException
Kelas-kelas tambahan yang tidak ada dalam java 2 standard edition (J2SE) adalah
javax.microedition, yang menyediakan API (Application Programming Interface) untuk
implementasi program pada handheld devices.
KToolbar
KToolbar merupakan lingkungan pengembangan yang disediakan oleh J2ME Wireless
Toolkit untuk pengembangan MIDlet. Aplikasi yang kita buat terdiri atas direktori-direktori berikut:
1. src
Berisi file-file kode Java.
2. bin
Berisi file-file JAD, JAR, dan manifest.
3. lib
Berisi file-file yang diperlukan dalam format JAR atau ZIP.
4. res
Berisi file-file resource.
Berikut adalah gambar Ktoolbar dari J2ME Wireless Toolkit:
32
Andino Maseleno
34. Bab 2 – Java 2 Micro Edition
Gambar 2.3 Ktoolbar, lingkungan pengembangan Java MIDP(MIDlet)
Emulator
Dalam membuat aplikasi MIDlet kita tidak perlu mencobanya langsung ke perangkat
handheld device. Kita bisa mencobanya terlebih dahulu dengan menggunakan sebuah emulator.
Disini kita menggunakan 2 jenis emulator, yaitu emulator DefaultGrayPhone dan emulator
DefaultColorPhone. Perbedaan dari keduanya adalah terletak pada layarnya. Pada emulator
DefaultGrayPhone hanya memiliki warna hitam dan putih layaknya handphone biasa yang tidak
berwarna. Beda dengan emulator DefaultColorPhone yang memiliki layar berwarna.
Gambar berikut menunjukkan emulator DefaultGrayPhone:
33
Andino Maseleno
35. Bab 2 – Java 2 Micro Edition
Gambar 2.4 Emulator DefaultGrayPhone
Emulator DefaultColorPhone tampak seperti gambar 2.5 dibawah ini:
34
Andino Maseleno
36. Bab 2 – Java 2 Micro Edition
Gambar 2.5 Emulator DefaultColorPhone
MIDLET
Midlet merupakan aplikasi yang dibuat menggunakan java 2 micro edition dengan profile
Mobile Information Device Profile (MIDP). Midlet berjalan dalam sebuah perangkat handheld
tetapi midlet tidak berinteraksi langsung dengan hardware dari ponsel atau perangkat handheld yang
lainnya melainkan berinteraksi melalui application management software (AMS).
Terdapat 3 buah tool untuk membuat sebuah aplikasi MIDlet maupun J2ME lainnya. Tool-tool
tersebut yaitu Java Development kit (JDK) versi 1.3 atau yang lebih tinggi, J2ME Wireless Toolkit
atau J2MEWTK yang merupakan paket-paket tool yang mudah digunakan dalam membuat maupun
menguji sebuah aplikasi Midlet, dan sebuah Text editor seperti Notepad, Ultraedit, JEdit dan
sebagainya. Secara umum terdapat beberapa hal penting dalam membuat sebuah aplikasi MIDlet,
35
Andino Maseleno
37. Bab 2 – Java 2 Micro Edition
yaitu menyangkut lifecycle, Graphical user interface (GUI), dan Application Descriptor .
LifeCycle Midlet
Lifecycle dari 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 juga merupakan program bawaan yang ada dalam perangkat
handheld tersebut yang berguna untuk mengatur manajemen aplikasi midlet yang ada.
Ada tiga status dalam Lifecycle sebuah midlet, yang terdapat pada tabel berikut ini:
Tabel 2.3 Status Lifecycle sebuah Midlet
Nama Status Keterangan
Pause Status ini terjadi ketika midlet selesai diinisialisasi dan tidak melakukan aksi
apapun. Secara garis besar, status midlet adalah pause pada saat :
1. Setelah midlet dibuat dengan konstruktor new( ) .
2. Dari status Active, kemudian berhasil memanggil fungsi
MIDdlet.pauseApp( ).
3. Dari status Active, kemudian berhasil memanggil fungsi
MIDlet.notifyPaused( ).
4. Dari status Active, namun ketika akan start( ) terjadi kesalahan berupa
exception : MIDletStateChangeException
Active Status ini terjadi ketika midlet sedang aktif / berjalan dengan normal, yakni
setelah memanggil fungsi MIDlet.startApp( )
Destroyed Status ini terjadi ketika midlet berhenti berjalan atau exit, sehingga seluruh
sumber daya yang digunakan akan dibebaskan. Status ini terjadi ketika berhasil
dilakukan pemanggilan fungsi MIDlet.destroyApp( ) atau
MIDlet.notifyDetroyed( ).
Jika digambarkan, perubahan status dalam daur hidup (lifecycle) dalam sebuah midlet dapat
dilihat pada gambar 2.6
36
Andino Maseleno
38. Bab 2 – Java 2 Micro Edition
new( )
Paused
destroyApp( )
pauseApp( )
Destroyed
startApp( )
Active destroyApp( )
Gambar 2.6 LifeCycle dan perubahan status sebuah Midlet
Eksekusi MIDlet
Umumnya urutan eksekusi sebuah MIDlet adalah sebagai berikut:
1. AMS (Application Management Software) menginisilisasi sebuah objek MIDlet, sehingga
midlet berada pada status paused.
2. Ketika AMS memutuskan bahwa midlet sudah waktunya dijalankan, maka AMS memanggil
fungsi MIDlet.startApp( ) sehingga midlet akan mulai aktif berfungsi.
3. Ketika AMS memutuskan midlet harus dinonaktifkan sementara, maka AMS akan memanggil
fungsi MIDlet.pauseApp( ) sehingga midlet akan berhenti bekerja.
4. Ketika AMS memutuskan bahwa midlet harus dinonaktifkan selamanya, maka AMS akan
memanggil fungsi MIDlet.destroyApp( ) sehinggax alokasi memori yang digunakan oleh midlet
yang bersangkutan akan dibersihkan.
37
Andino Maseleno
39. Bab 2 – Java 2 Micro Edition
Graphical User Interface (GUI)
Perangkat handheld semacam handphone memiliki berbagai keterbatasan, keterbatasan-
keterbatasan ini menyebabkan perlunya ada teknik pemrograman GUI yang berbeda dengan teknik
pemrograman yang umumnya digunakan pada aplikasi-aplikasi yang dijalankan pada sebuah
komputer. Connected Limited Device Connection (CLDC) tidak menyediakan fungsi-fungsi untuk
GUI, namun fungsi-fungsi ini ditangani oleh Mobile Information Device Profile (MIDP).
Semua fungsi-fungsi untuk antarmuka berbasis window (GUI) ditangani oleh paket
javax.microedition.lcdui. Graphical user interface yang disediakan oleh MIDP terbagi atas dua level
yaitu High Level dan Low Level. Pada level pemrograman yang rendah (low level) fungsionalitasnya
lebih spesifik ke jenis handheld yang digunakan hal ini memungkinkan kurangnya portabilitas
midlet yang dibuat, misalnya midlet pada handheld Motorola, midlet tersebut belum tentu bisa
dijalankan dengan baik pada handheld lain. Mirip dengan game-game pada ponsel Nokia contohnya
snake, yang jika dijalankan pada ponsel siemens tidak akan jalan dikarenakan keperluan game
membutuhkan fungsi-fungsi untuk menggambar dan mengolah sesuatu yang levelnya sudah pixel-
pixel gambar. Kelas-kelas untuk pemrograman GUI pada level yang rendah diimplementasikan oleh
kelas javax.microedition.lcdui.canvas.
Pada level pemrograman yang tinggi (high level) merupakan level pemrograman yang
dianjurkan karena aplikasi midlet akan lebih portable dengan banyak perangkat handheld yang
berbeda. Misalnya untuk mengembangkan sebuah form-form windows midlet pada handheld
motorola maka jika dijalankan aplikasi midlet pada handheld lain hasilnya akan sama. Kelas-kelas
untuk manajemen pemrograman yang tinggi akan diimplementasikan oleh kelas
javax.microedition.lcdui.screen.
Application Descriptor
Aplikasi wireless dikemas dalam sebuah kemasan yang berekstensi *.JAR. Selain itu dikenal
pula file *.JAD yang disebut sebagai application descriptor yang berguna untuk mendeskripsikan
isi dari file JAR tadi. Kedua file ini haruslah di-upload ke ponsel pengguna agar aplikasi dapat
dijalankan.
38
Andino Maseleno
40. Bab 3 – Pemrograman GUI
Bab 3
Pemrograman GUI
Berbeda dengan sebuah komputer desktop, perangkat handheld semacam handphone,
Palm, dan organizer memiliki berbagai keterbatasan, misalnya ukuran layar yang jauh lebih kecil
dan masukan input yang tidak berupa mouse. Keterbatasan-keterbatasan ini menyebabkan perlunya
ada teknik pemrograman GUI yang berbeda dengan teknik pemrograman yang umumnya digunakan
pada aplikasi-aplikasi yang dijalankan pada sebuah komputer. CLDC (Connected Limited Device
Connection) tidak menyediakan fungsi-fungsi untuk GUI, namun fungsi-fungsi ini akan ditangani
oleh MIDP (Mobile Information Device Profile).
Jenis Fungsi-fungsi API pada MIDP untuk GUI
Fungsi-fungsi untuk pembuatan antarmuka berbasis Window (GUI) yang disediakan oleh
MIDP terbagi atas dua level, yakni highlevel dan lowlevel. Semua fungsi-fungsi untuk antarmuka
berbasis window ini dilakukan oleh paket javax.microedition.lcdui. Pada level pemrograman yang
lebih tinggi (highlevel) yang merupakan level pemrograman yang dianjurkan, aplikasi MIDlet akan
lebih portabel dengan banyak perangkat handheld yang berbeda. Jadi, misalnya mengembangkan
sebuah form–form window MIDlet pada handheld Siemens SL45i, jika dijalankan aplikasi MIDlet
tersebut pada handheld lain, hasilnya akan sama. Kelas-kelas untuk manajemen pemrograman yang
lebih tinggi akan diturunkan dari javax.microedition.lcdui.Screen.
Pada level pemrograman yang lebih rendah (lowlevel), akan didapatkan fungsionalitas yang
lebih spesifik ke jenis handheld yang digunakan. Hal ini memungkinkan kurangnya portabilitas
MIDlet yang dibuat, misalnya membuat MIDlet pada handheld Motorola i_85s, MIDlet tersebut
belum tentu bisa dijalankan dengan baik pada handheld lain. Menyerupai dengan game-game pada
handphone Nokia 5110, misalnya Snake, yang jika coba dijalankan pada handphone Ericson T10S
tidak akan jalan. Kelas-kelas untuk pemrograman GUI pada level yang lebih rendah ini
diimplementasikan oleh kelas javax.microedition.lcdui.Canvas dan
javax.microedition.lcdui.Graphics.
Model Pemrograman GUI pada MIDP
Untuk menampilkan sesuatu pada layar, misalnya tulisan, form, dan sebagainya harus
39
Andino Maseleno
41. Bab 3 – Pemrograman GUI
mengakses display dari handheld yang dapat diakses dengan kelas javax.microedition.lcdui.Display.
Objek kedua adalah screen, yang berbeda dengan display. Screen digunakan untuk menangani
komponen-komponen GUI, misalnya window, form, dialogbox, dan menangani masukan dari
pengguna misalnya dari keypad. Objek screen ini direpresentasikan dengan kelas
javax.microedition.lcdui.Screen. Pada setiap waktu hanya satu objek screen yang bisa ditampilkan
oleh objek Display, untuk menampilkan digunakan fungsi setCurrent() pada objek Display.
Ada tiga tipe screen pada MIDlet, yakni:
Complex Screen Object
Tipe ini mengatur komponen-komponen GUI yang sudah tidak bisa ditambahi oleh komponen
screen yang lain. Misalnya, screen yang berisi objek ListBox untuk meminta masukan user, tidak
akan bisa kemudian diisi dengan objek lain.
Generic Screen Object
Tipe ini mengatur komponen-komponen GUI Form, yang bisa ditambahi oleh komponen screen
yang lain. Misalnya, screen yang berisi objek Form.
Low Level Screen Object
Digunakan oleh subkelas javax.microedition.lcdui.Graphics dan javax.microedition.lcdui.Screen
HighLevel API untuk Pembuatan GUI
Kelas-kelas yang menyediakan fungsionalitas untuk pembuatan GUI pada Java MIDP ada
pada paket javax.microedition.lcdui. pada paket tersebut ada tiga interface dan 21 kelas.
Display
Kelas Display merupakan kelas yang menyediakan fungsi-fungsi untuk manajemen layar
pada perangkat handheld, menampilkan objek screen, dan meyediakan informasi tentang properti
dari perangkat handheld yang digunakan. Akses ke layar dapat diacu dengan statik getDisplay()
pada kelas Display.
public static Display getDisplay(MIDlet m)
Penggunaan fungsi ini umumnya dilakukan di dalam fungsi startApp() dimana sebuah MIDlet akan
menjadi aktif, seperti ini:
public class yourMIDletName extends MIDlet{
Display display = null;
//Konstruktor
public yourMIDletName(){
40
Andino Maseleno
42. Bab 3 – Pemrograman GUI
}
public void startApp(){
display = Display.getDisplay(this);
}
public void pauseApp(){}
public void destroyApp(Boolean unconditional){}
}
Fungsi-fungsi lain dalam kelas javax.microedition.lcdui.Display adalah sebagai berikut:
public Displayable getCurrent();
Menghasilkan objek screen – Displayable yang sedang ditampilkan ke layar.
public boolean isColor();
Menghasilkan nilai true jika perangkat handheld yang digunakan mendukung warna atau nilai
false jika hanya mendukung grayscale.
public int numColors();
Menghasilkan jumlah warna yang didukung oleh perangkat handheld yang bersangkutan.
Berikut contoh programnya:
//Program HelloWorld.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class helloworld extends MIDlet {
private Display display;
private Alert alert = new Alert("MyAlert");
public helloworld() {
display = Display.getDisplay(this);
}
public void startApp() {
TextBox t = new TextBox("Screen Object", "HelloWorld", 256, 0);
alert.setType(AlertType.WARNING);
alert.setString("This is Alert");
display.setCurrent(alert, t);
}
public void pauseApp() {}
public void destroyApp (boolean unconditional) {}
}
41
Andino Maseleno
43. Bab 3 – Pemrograman GUI
Screen
Objek screen menyediakan fungsionalitas untuk interaksi antara pengguna dengan
perangkat handheld. Objek screen ini memiliki empat jenis objek turunan yang umum digunakan,
yakni TextBox, Alert, List, dan Form. Kelas javax.microedition.lcdui.Screen merupakan kelas
abstrak dengan dua karakteristik, yaitu objek screen bisa memiliki title dan ticker. Fungsi-fungsi
dalam objek javax.microedition.lcdui.Screen yang digunakan untuk manajemen properti title dan
ticker adalah:
public void setTitle(String s);
Untuk menetapkan properti title dari objek screen
public String getTitle();
Menghasilkan string properti title dari objek screen
public void setTicker(Ticker x);
Untuk menetapkan properti ticker dari objek screen
public Ticker getTicker();
Menghasilkan objek Ticker yang sedang aktif pada objek screen
Ticker
Ticker merupakan teks yang berjalan pada bagian atas layar aplikasi MIDlet. Sebuah ticker
dapat ditempatkan pada objek-objek turunan kelas Screen yang telah disebutkan, yakni TextBox,
List, Form, Alert. Berikut contoh program kelas javax.microedition.lcdui.Ticker:
//Program tickerDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class tickerDemo extends MIDlet {
private Display display;
private Ticker t;
public tickerDemo(){
}
public void startApp() {
display = Display.getDisplay(this);
42
Andino Maseleno
44. Bab 3 – Pemrograman GUI
t = new Ticker("This is Ticker");
List l = new List("Simple Choice", Choice.EXCLUSIVE);
l.append("Choice 1",null);
l.append("Choice 2",null);
l.setTicker(t);
display.setCurrent(l);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
TextBox
Kelas TextBox merupakan kelas turunan dari kelas abstrak javax.microedition.lcdui.Screen.
TextBox menyediakan media untuk menerima masukan teks dari keypad pengguna handheld. Jadi
jika aplikasi MIDlet Anda membutuhkan masukan dari pengguna, misalnya password, nama, alamat
dan informasi berbasis teks lainnya Anda akan menggunakan objek TextBox ini. Konstruktor dari
kelas TextBox ini adalah:
public TextBox(String title, String text, int maxSize, int constraints)
parameter-parameter:
String title
Untuk memberikan title pada Screen
String text
Untuk memberikan nilai awal pada TextBox
int maxSize
Untuk memberikan batasan maksimal jumlah karakter yang bisa diterima oleh TextBox. Jadi
Anda tidak akan bisa memasukkan karakter yang jumlahnya melebihi batas maksimal ini.
int constraint
Ada beberapa nilai yang bisa digunakan untuk parameter ini, yakni:
1. TextField.ANY
Artinya, bisa memasukkan sembarang karakter teks
2. TextField.EMAILADDR
Artinya, bisa memasukkan teks yang merupakan alamat email. Misalnya :
43
Andino Maseleno
45. Bab 3 – Pemrograman GUI
andinomaseleno@yahoo.com
3. TextField.NUMERIC
Artinya, hanya bisa memasukkan teks berupa angka saja.
4. TextField.PHONENUMBER
Artinya, hanya bisa memasukkan teks berupa nomor telepon saja, misalnya +628156037413,
08122311345.
5. TextField.URL
Artinya, bisa memasukkan teks berupa alamat web atau URL lain, misalnya
http://andinomaseleno.net
6. TextField.PASSWORD
Artinya memasukkan password pada saat login ke Windows, masukan akan ditampilkan dengan
karakter tertentu, misalnya ‘*’. Tipe batasan ini bisa digunakan dengan tipe batasan yang lain
dengan menggunakan operator ‘|’ sehingga menambah kemampuan pembatasan yang ada.
Fungsi penting dalam kelas TextBox lainnya adalah :
public int size()
Menghasilkan jumlah karakter yang saat ini telah dimasukkan dalam TextBox.
public void delete(int offset, int length);
Menghapus karakter dari posisi offset sepanjang jumlah karakter = length.
public int getCarerPosition();
Menghasilkan posisi kursor pada TextBox saat ini.
public String getString();
Menghasilkan string yang saat ini ada pada TextBox.
public void setString(String str);
Menetapkan string pada TextBox menjadi str pada parameter fungsi di atas.
public void insert(String str, int position);
Memasukkan string str pada parameter fungsi di atas pada TextBox mulai dari posisi position.
Berikut contoh programnya:
//Program textBoxDemo.java
import javax.microedition.midlet.*;
import javax.microedition.Textbox.*;
public class textBoxDemo extends MIDlet {
private Display display;
44
Andino Maseleno
46. Bab 3 – Pemrograman GUI
public textBoxDemo(){
}
public void startApp(){
display = Display.getDisplay(this);
TextBox t = new TextBox("This is TextBox","",256,TextField.ANY);
Integer maxSize = new Integer(t.getMaxSize());
String toPrint = "Jumlah maksimal karakter";
t.setString(toPrint +"="+maxSize.toString());
display.setCurrent(t);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional){
}
}
List
Kelas list (javax.microedition.lcdui.List) merupakan kelas turunan dari kelas abstrak
javax.microedition.lcdui.Screen yang menyediakan masukan pilihan (multiple choice) pada layar.
Konstruktor dari kelas List ini ada dua, yakni:
public List (String title, int listType)
public List (String title, int listType, String[] listElement, Image[]
listImages)
Parameter-parameter:
String title
Untuk memberikan title pada list
Int listType
Tipe list yang diberikan dapat berisi
1. Choice.EXCLUSIVE
Berarti setiap saat hanya bisa dipilih 1 buah pilihan]
2. Choice.IMPLICIT
Sama halnya dengan Choice.EXCLUSIVE, namun penampilannya berbeda
3. Choice.MULTIPLE
Berarti pengguna bisa memilih lebih dari 1 pilihan
String[] listElement
45
Andino Maseleno
47. Bab 3 – Pemrograman GUI
Merupakan array dari elemen list yang akan ditampilkan
Image[] listImage
Merupakan array dari gambar (javax.microedition.lcdui.Image) elemen list yang akan
ditampilkan.
Jika menggunakan konstruktor yang pertama public List(String title, int listType), akan dibuat
sebuah list kosong yang kemudian bisa menambahkan, menyisipkan, atau mengganti pilihan dalam
list. Fungsi-fungsi yang berkaitan dengan hal ini adalah:
public int append(String element, Image image)
Menambahkan satu elemen pada daftar pilihan dengan gambar tertentu. Jika tidak akan
menampilkan gambar, parameter image bisa di set null. Fungsi ini menghasilkan nilai integer
yang menunjukkan indeks lokasi dimana elemen baru saja ditambahkan.
public void insert(int index, String element, Image image)
Menyisipkan satu elemen pada daftar pilihan dengan gambar tertentu pada lokasi yang
ditentukan oleh nilai parameter index. Jika tidak akan menampilkan gambar, parameter image
bisa di set null.
public void set(int index, String element, Image image)
Menetapkan satu elemen pada daftar pilihan di lokasi yang ditentukan oleh nilai parameter
index dengan gambar tertentu. Jika tidak akan menampilkan gambar, parameter image bisa di
set null.
Contoh penggunaan kelas list sebagai berikut:
//Program listDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class listDemo extends MIDlet{
private Display display;
public listDemo(){
}
public void startApp() {
display = Display.getDisplay(this);
List myList = new List("This is List", Choice.IMPLICIT);
myList.append("Choice 1",null);
myList.append("Choice 2",null);
myList.append("Choice 3",null);
myList.insert(1,"Inserted Choice",null);
46
Andino Maseleno
48. Bab 3 – Pemrograman GUI
display.setCurrent(myList);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi penting dalam kelas List lainnya adalah:
public Image getImage(int index)
Jika objek List menggunakan gambar, fungsi ini menghasilkan objek Image yang digunakan
pada lokasi seperti yang disebutkan parameter index.
public String getString(int index)
Menghasilkan string teks yang ada pada objek List pada lokasi ke index
public boolean isSelected(int index)
Menghasilkan nilai true jika elemen ke-index dipilih oleh pengguna, jika tidak maka akan
menghasilkan nilai false.
public void delete(int index)
Menghapus elemen ke-index pada daftar pilihan yang ada.
public int getSelectedIndex()
Menghasilkan nilai indeks lokasi dimana sebuah elemen dipilih.
public int size()
Menghasilkan nilai jumlah elemen dalam list
Form
Bekerja dengan form memungkinkan untuk menampilkan beberapa komponen GUI
semacam daftar pilihan, masukan teks (textbox) dalam stu layar. Form diimplementasikan oleh
kelas javax.microedition.lcdui.Form. Form dapat menampung komponen-komponen yang disebut
item dalam satu layar, yaitu item-item tersebut adalah textfields, gauge, dan choice groups. Item-
item tersebut merupakan implementasi dari kelas turunan Item (javax.microedition.lcdui.Item). Ada
dua konstruktor form yang umum digunakan, yakni:
Public Form(String title)
Public Form(String title, Item[] items)
47
Andino Maseleno
49. Bab 3 – Pemrograman GUI
Konstruktor pertama secara sederhana menyediakan sebuah form dengan judul form seperti
parameter title yang diberika, sedangkan konstruktor yang kedua juga mendefinisikan item-item apa
saja yang akan ada di form yang akan dibuat. Sebagai gambaran, berikut contoh programnya:
//Program formDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class formDemo extends MIDlet {
private Display display;
public formDemo() {
}
public void startApp() {
Display display = Display.getDisplay(this);
Form f = new Form("Empty Form");
display.setCurrent(f);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi-fungsi berikut adalah fungsi-fungsi penting dalam kelas Form:
public int append(Image img)
Menambahkan gambar ke form yang dibungkus dalam kelas javax.microedition.lcdui.Image.
public int append(Item itm)
Menambahkan item ke form yang merupkan kelas-kelas turunan Item
(javax.microedition.lcdui.Item).
public int size()
Menghasilkan nilai integer yang merupakan jumlah item dalam form.
public void delete(int numItem)
Menghapus elemen atau item ke-numItem pada form.
public Item get(int numItem)
Menghasilkan objek Item pada form yang merupakan item ke numItem.
public void set(int numItem, Item itm)
48
Andino Maseleno
50. Bab 3 – Pemrograman GUI
Menetapkan item ke-numItem menjadi objek Item sesuai parameter itm.
public void insert(int numItem, Item itm)
Menyisipkan item pada item ke-numItem dengan objek Item sesuai parameter itm.
Kelas Item (javax.microedition.lcdui
Komponen-komponen yang bisa diletakkan dalam sebuah form merupakan komponen-komponen
yang memiliki kelas yang merupakan kelas turunan dari kelas abstrak javax.microedition.lcdui.Item.
Komponen-komponen tersebut adalah:
ChoiceGroup
Kelas ini menyediakan komponen yang mirip dengan list, yakni untuk menyediakan daftar
pilihan.
DateField
Kelas ini menyediakan komponen untuk memasukkan informasi tanggal dan waktu.
Gauge
Kelas ini menyediakan komponen grafik horizontal yang biasanya digunakan untuk
memberikan gambaran berapa persen proses berjalan.
Image dan ImageItem
Kelas ini menyediakan komponen grafik untuk manipulasi gambar.
StringItem
Kelas ini menyediakan komponen teks string yang tidak bisa diedit oleh pengguna.
TextField
Kelas ini menyediakan komponen untuk masukan teks string oleh pengguna.
ChoiceGroup
Kelas ChoiceGroup (javax.microedition.lcdui.ChoiceGroup) merupakan kelas turunan dari kelas
abstrak javax.microedition.lcdui.Item yang menyediakan masukan pilihan (multiple choice) pada
layar. Konstruktor dari kelas ChoiceGroup ini ada dua, yakni:
public ChoiceGroup(String title, int choiceType)
public ChoiceGroup(String title, int choiceType, String[] choiceElement, Image[]
choiceImages)
Parameter-parameter:
String title
49
Andino Maseleno
51. Bab 3 – Pemrograman GUI
Untuk memberikan title pada daftar pilihan yang ditampilkan.
int choiceType
Tipe pilihan ini yang digunakan, dapat berisi:
1. Choice.EXCLUSIVE
Berarti setiap saat hanya bisa dipilih 1 buah pilihan saja.
2. Choice.MULTIPLE
Berarti pengguna bisa memilih lebih dari 1 pilihan.
String[] choiceElement
Merupakan array dari elemen pada daftar pilihan yang akan ditampilkan.
Image[] choiceImages
Merupakan array dari elemen gambar (javax.microedition.lcdui.Image) yang akan ditampilkan
pada daftar pilihan.
Jika menggunakan konstruktor yang pertama public.ChoiceGroup(String title, int
choiceType), maka akan dibuat sebuah daftar pilihan kosong yang kemudian bisa menambahkan,
menyisipkan, atau mengganti pilihan dalam list. Fungsi-fungsi yang berkaitan dengan hal ini
adalah:
public int append(String element, Image image)
Menambahkan satu elemen pada daftar pilihan dengan gambar tertentu. Jika tidak akan
menampilkan gambar, parameter image bisa di set null. Fungsi inio menghasilkan nilai integer
yang menunjukkan indeks lokasi dimana elemen baru saja ditambahkan.
public void insert(int index, String element, Image image)
Menyisipkan satu elemen pada daftar pilihan dengan gambar tertentu pada lokasi yang
ditentukan oleh nilai parameter index. Jika tidak akan menampilkan gambar, parameter image
bisa di set null.
public void set(int index, String element, Image image)
Menetapkan satu elemen pada daftar pilihan di lokasi yang ditentukan oleh nilai parameter
index dengan gambar tertentu. Jika tidak akan menampilkan gambar, parameter image bisa
ditetapkan null.
Contoh penggunaan kelas ChoiceGroup (javax.microedition.lcdui.ChoiceGroup) adalah
sebagai berikut:
//Program choiceGroupDemo.java
50
Andino Maseleno
52. Bab 3 – Pemrograman GUI
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class choiceGroupDemo extends MIDlet {
private Display display;
public choiceGroupDemo() {
}
public void startApp() {
display = Display.getDisplay(this);
Form f = new Form("Pilih yang Anda inginkan");
ChoiceGroup cg = new ChoiceGroup("Pilihan Makanan", Choice.EXCLUSIVE);
cg.append("Ayam",null);
cg.append("Ikan",null);
cg.insert(1,"Telur",null);
f.append(cg);
display.setCurrent(f);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi penting dalam kelas ChoiceGroup lainnya adalah:
public Image getImage(int index)
Jika objek ChoiceGroup menggunakan gambar, maka fungsi ini menghasilkan objek Image
yang digunakan pada lokasi seperti yang disebutkan parameter index.
public String getString(int index)
Menghasilkan string teks yang ada pada objek ChoiceGroup pada lokasi ke-index.
public boolean isSelected(int index)
Menghasilkan nilai true jika elemen ke-index dipilih oleh pengguna, jika tidak, akan
menghasilkan nilai false.
public void delete(int index)
Menghapus elemen ke-index pada daftar pilihan yang ada.
public int getSelectedIndex()
Menghasilkan nilai indeks lokasi sebuah elemen dipilih
public int size()
51
Andino Maseleno
53. Bab 3 – Pemrograman GUI
Menghasilkan nilai jumlah elemen dalam daftar pilihan.
DateField
Kelas DateField (javax.microedition.lcdui.DateField) merupakan kelas turunan dari kelas
abstrak javax.microedition.lcdui.Item yang menyediakan masukan berupa waktu atau tanggal untuk
MIDlet. Konstruktor dari kelas DateField ini ada 2 buah yakni:
public DateField(String title, int mode)
public DateField(String title, int mode, TimeZone timezone)
Parameter-parameter:
String title
Untuk memberikan title pada masukan tanggal/waktu yang ditampilkan.
Int Mode
Tipe masukan yang digunakan, dapat berisi:
1. DateField.TIME
Berarti digunakan untuk mengambil masukan waktu.
2. DateField.DATE
Berarti digunakan untuk mengambil masukan tanggal.
3. DateField.DATE_TIME
Berarti digunakan untuk mengambil masukan waktu/tanggal.
TimeZone timezone
Untuk memberikan informasi zona waktu yang akan digunakan. Kelas TimeZone ada dalam
paket java.util.
Berikut adalah kode Java untuk menampilkan informasi tanggal pada perangkat handheld:
//Program dateDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class dateDemo extends MIDlet {
private Display display;
public dateDemo() {
}
public void startApp() {
display = Display.getDisplay(this);
Form f = new Form("Date Information");
52
Andino Maseleno
54. Bab 3 – Pemrograman GUI
DateField d = new DateField("Today's date", DateField.DATE);
f.append(d);
display.setCurrent(f);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Gauge
Objek Gauge merepresentasikan grafik batang yang disusun secara horizontal yang dapat
digunakan dalam form untuk merepresentasikan jalannya sebuah proses dan lain sebagainya. Objek
Gauge diimplementasikan oleh kelas Gauge(javax.microedition.lcdui.Gauge) yang merupakan
kelas turunan dari kelas abstrak javax.microedition.lcdui.Item. Konstruktor dari kelas Gauge ini
adalah:
public Gauge (String title, boolean interactive, int maxValue, int initialValue)
Parameter-parameter:
String title
Untuk memberikan title pada Gauge yang ditampilkan.
boolean interactive
Apakah akan ditampilkan secara interaktif atau tidak? Jika modenya interaktif, user bisa
mengubah progress bar yang ada dan jika modenya tidak interaktif, user tidak bisa mengubah
progress bar yang ada.
int maxValue
Nilai maksimum yang diperbolehkan, dimana nilai ini harus > 0.
int initialValue
Nilai awal yang digunakan, nilainya antara 0 sampai dengan nilai maksimum yang telah
didefinisikan.
Agar lebih jelas perhatikan contoh sederhana berikut ini:
//Program gaugeDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Date;
53
Andino Maseleno
55. Bab 3 – Pemrograman GUI
public class gaugeDemo extends MIDlet {
private Display display;
public gaugeDemo() {
}
public void startApp() {
display = Display.getDisplay(this);
Form f = new Form("What is Gauge ?");
Gauge g1 = new Gauge("This is a Gauge",false,15,1);
f.append(g1);
display.setCurrent(f);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Untuk mendapatkan informasi apakah progress bar yang dibuat bersifat interaktif atau tidak
dengan menggunakan fungsi:
public boolean isInteractive()
Jika dikembalikan nilai true, progress bar bersifat interactive.
Dari objek Gauge ini, bisa diperoleh nilai yang sedang ada sekarang, nilai maksimal yang
diperbolehkan dengan fungsi-fungsi berikut:
public int getValue()
Menghasilan nilai integer dari progress bar yang ada
public int getMaxValue()
Menghasilkan nilai maksimum dari progress bar yang ada
Selain itu, bisa ditetapkan nilai yang sedang ada sekarang, nilai maksimal yang
diperbolehkan dengan fungsi-fungsi berikut:
public void setValue(int val)
Menetapkan nilai integer dari progress bar yang ada.
public void setMaxValue(int maxval)
Menetapkan nilai maksimum dari progressbar yang ada.
Bisa juga diubah label judul dari progress bar yang ada menggunakan fungsi:
public void setLabel(String str)
Menetapkan label progress bar yang ada dengan teks string pada parameter.
54
Andino Maseleno
56. Bab 3 – Pemrograman GUI
StringItem
Objek StringItem digunakan untuk meletakkan objek teks string yang tidak bisa diubah oleh
pengguna secara langsung pada form. Kelas StringItem diimplementasikan oleh kelas StringItem
(javax.microedition.lcdui.StringItem) yang merupakan kelas turunan dari kelas abstrak
javax.microedition.lcdui.Item. Konstruktor dari kelas StringItem ini adalah:
public Gauge(String label, String content)
Parameter-parameter:
String title
Untuk memberikan title pada objek teks string yang ditampilkan.
String content
Isi dari teks yang akan ditampilkan pada form.
Berikut contoh programnya:
//Program stringItemDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class stringItemDemo extends MIDlet {
private Display display;
public stringItemDemo() {
}
public void startApp() {
display = Display.getDisplay(this);
Form f = new Form("Greeting");
StringItem si = new StringItem("I say: "Hi Girls");
f.append(si);
display.setCurrent(f);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi-fungsi yang ada di dalam kelas ini adalah:
public void setText(String teks)
Menetapkan teks sesuai parameter teks yang diberikan pada objek StringItem
55
Andino Maseleno
57. Bab 3 – Pemrograman GUI
public void setLabel(String lbl)
Menetapkan label pada objek StringItem sesuai parameter lbl yang diberikan.
public String getText()
Menghasilkan teks string yang ada pada objek
public String getLabel()
Menghasilkan label yang ada pada objek StringItem.
TextField
Objek TextField digunakan untuk meletakkan objek teks string yang bisa diubah oleh pengguna
secara langsung pada form. Jadi, objek ini mirip dengan objek TextBox. Objek TextField
diimplementasikan oleh kelas TextField (javax.microedition.lcdui.TextField) yang merupakan kelas
turunan dari kelas abstrak javax.microedition.lcdui.Item. Konstruktor dari kelas TextField ini
adalah:
public TextField(String title, String text, int maxSize, int constraints)
Parameter-parameter:
String title
Untuk memberikan title pada TextField yang aktif.
String text
Untuk memberikan nilai awal pada TextField.
int maxSize
Untuk memberikan batasan maksimal jumlah karakter yang bisa diterima oleh TextField. Jadi tidak
akan bisa memasukkan karakter yang jumlahnya melebihi batas maksimal ini.
int constraint
Ada beberapa nilai yang bisa digunakan untuk parameter ini, yakni:
TextField.ANY
Artinya, bisa memasukkan sembarang karakter teks.
TextField.EMAILADDR
Artinya, bisa memasukkan teks yang merupakan alamat email, misalnya
andinomaseleno@yahoo.com
TextField.NUMERIC
Artinya, hanya bisa memasukkan teks berupa angka saja.
TextField.PHONENUMBER
56
Andino Maseleno
58. Bab 3 – Pemrograman GUI
Artinya, hanya bisa memasukkan teks yang berupa nomor telepon saja, misalnya +628156864651,
08156864651.
TextField.URL
Artinya, bisa memasukkan teks berupa alamat Web atau URL lain, misalnya
http://andinomaseleno.net
TextField.PASSWORD
Artinya, seperti memasukkan password pada saat logi ke Windows, masukkan akan ditampilkan
dengan karater tertentu, misalnya ‘*’. Tipe batasan ini bisa digunakan dengan tipe batasan yang lain
dengan menggunakan operator ‘|’ sehingga menambah kemampuan pembatasan yang ada.
Berikut contoh programnya:
//Program textFieldDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class textFieldDemo extends MIDlet {
private Display display;
public textFieldDemo() {
}
public void startApp() {
display = Display.getDisplay(this);
TextField lname = new TextField("Login
Name","andinomaseleno",25,TextField.ANY);
TextField pval = new
TextField("Password","secret",45,TextField.ANY|TextField.PASSWORD);
Form f = new Form("Sign on");
f.append(lname);
f.append(pval);
display.setCurrent(f);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi penting dalam kelas TextField lainnya adalah:
57
Andino Maseleno
59. Bab 3 – Pemrograman GUI
public int size()
Menghasilkan jumlah karakter yang saat ini telah dimasukkan dalam TextField
public void delete(int offset, int length)
Menghapus karakter dari posisi offset sepanjang jumlah karakter = length.
public int getCaretPosition()
Menghasilkan posisi kursor pada TextField saat ini.
public String getString()
Menghasilkan string yang saat ini ada pada TextField.
public void setString(String str)
Menetapkan string pada TextField menjadi str pada parameter fungsi di atas.
public void insert(String str, int position)
Memasukkan string str pada parameter fungsi di atas pada TextField mulai dari posisi position.
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 atauu tempat lain. Sebaliknya
gambar yang bersifat mutable bisa diubah-ubah oleh aplikasi. Konstruktor dari kelas Image ini
bersifat statik, sehingga tidak menggunakan operator 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.
Perlu diketahui bahwa jenis file gambar yang didukung saat ini hanya file dengan format PNG
(Portable Network Graphics).
Berikut contoh programnya:
//Program imageDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class imageDemo extends MIDlet {
private Display display;
public imageDemo() {
58
Andino Maseleno
60. Bab 3 – Pemrograman GUI
}
public void startApp() {
display = Display.getDisplay(this);
try {
Image myimg = Image.createImage("/Andino.png");
Form f = new Form("Andino");
f.append(myimg);
display.setCurrent(f);
} catch (IOException e) {
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi-fungsi penting dalam kelas Image ini adalah:
public Graphics getGraphics()
Menghasilkan objek Graphics yang bersesuaian dari objek Image yang bersangkutan.
public int getHeight()
Menghasilkan tinggi/panjang objek gambar yang ada.
public int getWidth()
Menghasilkan lebar objek gambar yang ada.
public boolean isMutable()
Menghasilkan nilai true jika objek gambar bersifat mutable.
ImageItem
Objek ImageItem digunakan untuk mengotrol objek Image yang ada pada form atau alert.
Konstruktor dari kelas ImageItem ini adalah:
public void ImageItem(String label, Image img, int layout, String altText)
Parameter-parameter:
String label
Untuk memberikan judul pada objek ImageItem yang aktif.
String altText
59
Andino Maseleno
61. Bab 3 – Pemrograman GUI
Untuk memberikan alternatif teks string pada gambar.
Image img
Objek Image yang akan dikontrol.
int layout
Ada beberapa nilai yang bisa digunakan untuk parameter ini, yakni:
1. ImageItem.LAYOUT_CENTER
Gambar akan diatur agar pada posisi tengah.
2. ImageItem.LAYOUT_DEFAULT
Gambar diatur sesuai posisi standarnya.
3. ImageItem.LAYOUT_LEFT
Gambar diatur agar pada posisi kiri.
4. ImageItem.LAYOUT_RIGHT
Gambar diatur agar pada posisi kanan.
5. ImageItem.LAYOUT_NEWLINE_AFTER
Setelah gambar dibuat akan diberikan sebuah baris baru.
6. ImageItem.LAYOUT_NEWLINE_BEFORE
Sebelum gambar dibuat akan diberikan sebuah baris baru.
Berikut contoh programnya:
//Program imageDemo.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class imageDemo extends MIDlet {
private Display display;
public imageDemo() {
}
public void startApp() {
display = Display.getDisplay(this);
try {
Image myimg = Image.createImage(myimg);
ImageItem item = new ImageItem("My Duke", img2,
ImageItem.LAYOUT_NEWLINE_BEFORE, "My Duke");
Form f = new Form ("Duke");
f.append(myimg);
60
Andino Maseleno
62. Bab 3 – Pemrograman GUI
f.append(item);
display.setCurrent(f);
} catch (IOException e) {
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Fungsi-fungsi penting dalam kelas ImageItem ini adalah:
public String getAltText()
Menghasilkan teks string yang merupakan teks alternatif dari objek ImageItem.
public Image getImage()
Menghasilkan objek Image dari objek ImageItem yang bersangkutan.
public int getLayout()
Menghasilkan tipe layout yang digunakan oleh objek ImageItem yang bersangkutan.
public void setAltText(String altText)
Menetapkan teks string yang merupakan teks alternatif pada objek ImageItem.
public void setImage(Image img)
Menetapkan objek Image dari objek ImageItem yang bersangkutan.
public void setLayout(int layout)
Menetapkan tipe layout yang akan digunakan oleh objek ImageItem yang bersangkutan.
LowLevel API untuk Pembuatan GUI
Canvas
Kelas canvas merupakan kelas yang menyediakan fungsi-fungsi untuk manajemen antarmuka pada
level rendah handheld. Kelas ini merupakan kelas abstrak sehingga harus membuat kelas
turunannnya dahulu untuk melakukan manajemen antarmuka pada level rendah. Berikut kode
sumber kelas javax.microedition.lcdui.Canvas:
package javax.microedition.lcdui.*;
public abstrack class Canvas extends Displayable {
61
Andino Maseleno