As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com Komponen Class Item (2) As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com
Class DateField DateField adalah sebuah komponen yang dapat menampilkan dan mengedit nilai dari sebuah objek yang bertipe Date Class DateField memiliki dua constructor: public DateField(String label, int mode) int mode, TimeZone timeZone)
Tanggal dan waktu yang disimpan dalam sebuah objek Date selalu bersifat relatif berpatokan pada 1 Januari 1970 UTC tengah malam Ketika menampilkan waktu, koreksi diperlukan untuk zona waktu di mana user bekerja Argumen timeZone dapat digunakan untuk menyediakan objek TimeZone yang dapat digunakan untuk menentukan bagaimana menampilkan tanggal dan waktu untuk lokasi tertentu
Jika argumen ini tidak disertakan (atau bernilai null), maka digunakan TimeZone default pada perangkat mobile, yang seharusnya menampilkan waktu lokal dengan benar Oleh karena itu, penting untuk menyediakan nilai TimeZone hanya bila ingin menampilkan tanggal dan waktu untuk zona waktu yang berbeda Spesifikasi CLDC hanya mendukung zona waktu untuk GMT. Pada prakteknya, sebuah perangkat mendukung zona waktu di mana perangkat tersebut beroperasi, tapi tidak ada jaminan untuk tersedianya zona waktu yang lain
Argumen mode menentukan apa yang akan ditampilkan oleh DateField dan menerima satu dari nilai berikut: DateField.TIME Hanya menampilkan waktu saja, memiliki nilai konstanta 2 DateField.DATE Hanya menampilkan tanggal saja, memiliki nilai konstanta 1 DateField.DATE_TIME Menampilkan tanggal dan waktu, memiliki nilai konstanta 3
Seperti objek Item yang lain, ketika user mengubah tanggal atau waktu yang ditampilkan oleh DateField, perubahan akan dilaporkan ke ItemStateListener beserta Form di mana objek DateField tersebut ditampilkan Nilai dari objek Date yang dihubungkan dengan DateField dapat diperoleh atau diubah menggunakan metode berikut: public void setDate(Date date); public Date getDate( );
Ketika metode setDate() dipanggil, DateField tidak menyimpan referensi dari objek Date yang diberikan padanya, tetapi copy dari nilainya sehingga perubahan yang terjadi di dalam komponen DateField tidak dikembalikan ke objek Date yang diberikan sebagai argumen Nilai yang dikembalikan oleh metode getDate() adalah objek yang baru dibuat di mana merupakan tanggal atau waktu pada saat metode tersebut dipanggil
Metode setDate() dapat dipanggil dengan argumen null Metode setDate() dapat dipanggil dengan argumen null. Pada kasus ini, DateField dianggap belum diinisialisasi dan tidak menampilkan nilai yang valid. Metode getDate() mengembalkan nilai null ketika DateField belum diinisialisasi dan implementasinya akan menampilkan string <time> untuk waktu dan <date> untuk tanggal
Setiap mode pada DateField memberikan tingkah laku yang berbeda seperti: Mode DATE_TIME DateField tidak menerima nilai detik dan milidetik, pemberian nilai waktu dengan menyertakan nilai detik tidak akan berpengaruh Mode DATE DateField hanya bekerja dengan tahun, bulan, dan tanggal saja, sehingga pemanggilan metode getDate() pada mode ini akan memberikan nilai nol untuk waktu
Mode TIME Bagian tanggal dari objek Date yang diberikan sebagai argumen harus diinisialisasi dengan tanggal 1 Januari 1970 dan Date yang dikemballikan lewat getDate() memiliki tanggal yang sama Kode berikut dapat digunakan untuk membuat objek Date yang memiliki waktu, tahun, bulan, dan tanggal sekarang:
// Membaca dari kalender untuk inisialisasi Calendar baseCal = Calendar.getInstance( ); Date baseDate = new Date(0); baseCal.setTime(baseDate); // Reset tanggal sesuai inisialisasi Calendar cal = Calendar.getInstance(); Date now = new Date( ); cal.setTime(now); // Set tahun, bulan, dan tanggal cal.set(Calendar.YEAR, baseCal.get(Calendar.YEAR)); cal.set(Calendar.MONTH, baseCal.get(Calendar.MONTH); cal.set(Calendar.DATE, baseCal.get(Calendar.DATE));
Mode dari DateField dapat diubah lewat metode setInputMode(): public void setInputMode(int mode); mode mode dari DateField, dimana mengubah mode akan mengubah tampilan visual dari komponen mungkin juga mempengaruhi nilai Date di dalamnya dengan ketentuan sbb: Mengganti ke mode DATE: bagian waktu di-reset menjadi 00:00 A.M Mengganti ke mode TIME: bagian tanggal di-reset menjadi January 1, 1970
Aplikasi Demo DateField 1 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.DateField; import java.util.Date; import java.util.TimeZone; public class ContohTgl extends MIDlet{ private Display disp; private Form frm; private DateField df; public ContohTgl(){ disp = Display.getDisplay(this); }
public void startApp(){ frm = new Form("Demo DateField"); df = new DateField("Tanggal lahir :", DateField.DATE, TimeZone.getTimeZone("GMT-8:00")); df.setDate(new Date()); frm.append(df); disp.setCurrent(frm); } public void pauseApp(){ public void destroyApp(boolean unconditional){
Class ImageItem Sebuah gambar dapat ditempatkan di dalam Form dengan kendali yang terbatas penempatannya relatif terhadap item yang lain Class ImageItem memiliki sebuah constructor: public ImageItem(String label, Image image, int layout, String altText)
label image layout altText label atau keterangan dari gambar pada ImageItem image objek Image yang nantinya ditampilkan oleh ImageItem layout pengaturan tata letak dari label dan gambar di dalam ImageItem altText teks alternatif yang tampil apabila gambar gagal ditampilkan
Argumen layout membatasi penampilan label dan gambar pada ImageItem yang ditempatkan pada Form Implementasi pada perangkat mobile bisa saja berbeda karena menggunakan aturan layout-nya sendiri sehingga mengabaikan argumen layout yang diberikan Apabila perangkat tidak mampu menampilkan gambar tersebut, maka argumen altText yang akan ditampilkan
Gambar diberikan ke dalam form dari sebuah objek Image. Terdapat beberapa cara untuk membuat Image, misalnya lewat koneksi jaringan, membuat gambar primitif dari beragam bentuk 2D, atau memuat gambar dari data terkode dalam sebuah file Memuat gambar dari sebuah file menggunakan metode static dari class Image berikut: public static Image createImage(String name) throws IOException
name sebuah nama yang mewakili lokasi dari sebuah resource berupa file Parameter name digunakan sebagai argumen ke metode getResourceAsStream() Parameter name harus selalu berupa nama path dari file yang bersifat absolut File tersebut harus berisi sebuah gambar yang berformat PNG (Portable Network Graphics) karena merupakan satu-satunya format yang didukung oleh perangkat MIDP
ImageItem.LAYOUT_DEFAULT Parameter layout berupa sebuah bitmask yang dibuat dari kombinasi nilai berikut: ImageItem.LAYOUT_DEFAULT gambar ditempatkan sesuai kebijakan layout default pada perangkat ImageItem.LAYOUT_LEFT gambar ditempatkan rata-kiri pada ruang yang tersedia ImageItem.LAYOUT_RIGHT gambar ditempatkan rata-kanan pada ruang yang tersedia
ImageItem.LAYOUT_CENTER gambar ditempatkan rata-tengah pada ruang yang tersedia ImageItem.LAYOUT_NEWLINE_BEFORE sebuah spasi-baris ditampilkan sebelum image digambar ImageItem.LAYOUT_NEWLINE_AFTER sebuah spasi-baris ditampilkan sesudah image digambar
public void append(Image image); Ketika LAYOUT_DEFAULT digunakan, gambar ditempatkan sesuai aturan implementasi pada perangkat, yaitu ditempatkan pada baris horizontal yang sama dengan Item sebelumnya bila: ImageItem memiliki label yang tidak kosong Sisa ruang yang tersedia pada baris tersebut cukup dengan lebar gambar Gambar juga dapat dengan cepat ditambahkan ke Form dengan metode berikut: public void append(Image image);
Cara di atas sama dengan membuat dan menambahkan sebuah ImageItem dengan layout LAYOUT_DEFAULT dan tanpa label seperti berikut: form.append(new ImageItem(null, image, ImageItem.LAYOUT_DEFAULT, null));
Aplikasi Demo ImageItem 1 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.ImageItem; import javax.microedition.lcdui.Image; import java.io.IOException; public class DemoImgItm extends MIDlet{ private Display disp; private Form frm; private ImageItem ii; public DemoImgItm(){ disp = Display.getDisplay(this); }
public void startApp(){ frm = new Form("Demo ImageItem"); Image img = null; try{ img = Image.createImage("/comp.png"); }catch(IOException ioe){ System.out.println("File tdk ada!"); } ii = new ImageItem("Pemrograman Komputer", img, ImageItem.LAYOUT_DEFAULT, "gambar komputer"); frm.append(ii); disp.setCurrent(frm);
public void pauseApp(){ } public void destroyApp(boolean unconditional){ Catatan: Sebelum menjalankan aplikasi tersebut, simpan sebuah file gambar berformat PNG bernama comp.png yang berukuran kecil ke dalam folder res