Komponen Class Item (3) As’ad Djamalilleil

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Kelas & Objek.
Universitas Muhammadiyah Malang Fakultas Teknik Jurusan Teknik Informatika Semester Genap Nur hayatin, S.ST.
MIDlet User Interface (3) As’ad Djamalilleil
Package As’ad Djamalilleil
Komponen Class Item (2) As’ad Djamalilleil
Struktur Kode Program MIDlet As’ad Djamalilleil
WITH FANDI SUSANTO S.SI. Pemrograman Aplikasi Bergerak By Fandi Susanto S.Si.
Struktur Kode Aplikasi Java (2) As’ad Djamalilleil
Workshop SCS: Java Game Programming
Struktur Kontrol (2) As’ad Djamalilleil
Antarmuka Tingkat Bawah (Canvas)
Abstract & Interface As’ad Djamalilleil
Dasar Exception Handling
Flow Control & Exception Handling
Looping (perulangan) As’ad Djamalilleil
Web Teknologi 3 (MKB721C) Minggu 2 Page 1 MINGGU 2 Web Teknologi 3 (MKB721C) Pokok Bahasan: –Midlet –User Interface Tujuan Instruksional Khusus: Agar.
Java array.
PEMOGRAMAN APLIKASI BERGERAK (Java ME)
Single Linked List.
MIDlet User Interface (2) As’ad Djamalilleil
Instalasi JME & Uji Coba As’ad Djamalilleil
Komponen Class Item (1) As’ad Djamalilleil
Mendapatkan input dari keyboard
Mendapatkan Input dari Keyboard
Struktur Kode Aplikasi Java (1)
As’ad Djamalilleil Function (method) As’ad Djamalilleil
Pemrograman Aplikasi Bergerak
PEMOGRAMAN APLIKASI BERGERAK (Java ME)
PELATIHAN JAVA FUNDAMENTAL
Diberikan pada Kuliah Sela Teknik Informatika - Universitas Muhammadiyah Malang Tahun 2011.
Struktur Data List Linear : Linked List (Double Linkedlist)
Komponen-Komponen dalam J2ME
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME) “Skill to do comes of doing. “ (Ralph Waldo Emerson)
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME)
MIDP (MIDlet) dan Tools
PROGRAM APLIKASI MOBILE EMHA TAUFIQ LUTHFI PERTEMUAN 5 (18 APRIL 2011)
Struktur Kontrol Pemilihan
Struktur Data List Linear : Linked List (Single Linkedlist)
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME) Nyimas Artina.
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME) Nyimas Artina.
Exceptional Pendahuluan Bugs dan error dalam sebuah program sangat sering muncul meskipun program tersebut dibuat oleh programmer berkemampuan tinggi.
PROGRAM APLIKASI MOBILE EMHA TAUFIQ LUTHFI PERTEMUAN 2.
Struktur kontrol.
Try, Catch, Finally Throws
Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian.
JAVA ARRAY.
High Level User Interface
Java array.
Pertemuan 5 Tipe Data, Operator, Tata Bahasa
MIDP High-Level User Interface
Java array.
Java array.
Tipe Data, Variabel, dan Operator
MIDlet User Interface (2)
Struktur Kode Program MIDlet
As’ad Djamalilleil Komponen Class Item (2) As’ad Djamalilleil
As’ad Djamalilleil Komponen Class Item (1) As’ad Djamalilleil
As’ad Djamalilleil Komponen Class Item (3) As’ad Djamalilleil
Review Materi Java Fundamental
As’ad Djamalilleil Class List As’ad Djamalilleil
Tipe Data, Variabel, dan Operator
MIDlet User Interface (3)
Java array.
Mobile Teknologi Pertemuan 3
Flow Control & Exception Handling
Java array.
Tipe Data, Variabel, dan Operator
Java array.
Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian.
Transcript presentasi:

Komponen Class Item (3) As’ad Djamalilleil

Class Gauge Gauge menyediakan jalan untuk mewakili sebuah nilai yang dapat dipilih dari sebuah rangkaian nilai integer dimulai dari 0 sampai dengan maksimum nilai yang ditentukan oleh aplikasi Class Gauge memiliki sebuah constructor: public Gauge(String label, boolean interactive, int maxValue, int initialValue);

maxValue –nilai terbesar dari rangkaian nilai yang dapat dipilih pada gauge initialValue –nilai yang akan tampil sebagai nilai awal. Nilai minimum selalu bernilai nol, dan nilai terpilih harus selalu bernilai positif dan tidak lebih bsar dari nilai maksimum interactive –menentukan apakah user dapat mengatur nilai pada gauge atau tidak. Agar gauge dapat berfungsi sebagai slider, maka nilai argumen interactive harus bernilai true

Pengaturan yang diberikan oleh user dilaporkan ke ItemStateListener yang berada pada Form di mana gauge ditampilkan Jika argumen interactive bernilai false, nilai dari gauge hanya dapat diatur secara programatik, dimana pada mode ini gauge berfungsi seperti progress-bar Nilai dari gauge dapat diperoleh atau diubah menggunakan metode berikut: public int getValue(); public void setValue(int value);

Nilai argumen value pada metode setValue() harus berupa bilangan non- negatif dan tidak lebih dari nilai maksimum Nilai maksimum dapat dimanipulasi menggunakan metode berikut: public int getMaxValue(); public void setMaxValue(int value); Argumen value pada metode setMaxValue() harus lebih besar dari nol Jika nilai argumen tersebut lebih kecil dari nilai maksimum, maka nilai maksimum akan diturunkan ke nilai tersebut

Ada pula metode yang dapat membaca status dari gauge apakah bersifat interaktif atau tidak: public boolean isInteractive( ); Atribut ini tidak dapat diubah, hanya dapat diatur pada saat instansiasi saja Berikut adalah contoh potongan kode untuk membaca setiap perubahan pada gauge yang dilakukan oleh user:

public void itemStateChanged(Item item){ if(item instanceof Gauge){ int value = ((Gauge)item).getValue(); System.out.println("Nilainya :" + value); } else { // kode lainnya }

Aplikasi Demo Gauge 1 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.Gauge; public class DemoGauge extends MIDlet{ private Display disp; private Form frm; private Gauge gog; public DemoGauge(){ disp = Display.getDisplay(this); }

public void startApp(){ frm = new Form("Demo Gauge"); gog = new Gauge("Ukuran sepatu :", true, 35, 28); frm.append(gog); disp.setCurrent(frm); System.out.println("Nilai awal : " + gog.getValue()); } public void pauseApp(){ }

public void destroyApp(boolean unconditional){ } }

Aplikasi Demo Gauge 2 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.Gauge; public class DemoGauge extends MIDlet{ private Display disp; private Form frm; private Gauge gog; public DemoGauge(){ disp = Display.getDisplay(this); }

public void startApp(){ frm = new Form("Demo Gauge"); gog = new Gauge("Sedang proses :", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING); frm.append(gog); disp.setCurrent(frm); } public void pauseApp(){} public void destroyApp( boolean unconditional){} }

Aplikasi Demo Gauge 3 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.Gauge; public class DemoGauge extends MIDlet implements Runnable{ private Display disp; private Form frm; private Gauge gog; private Thread thr; public DemoGauge(){ disp = Display.getDisplay(this); }

public void startApp(){ frm = new Form("Demo Gauge"); gog = new Gauge("Proses sedang berjalan", false, 10, 1); thr = new Thread(this); thr.start(); frm.append(gog); disp.setCurrent(frm); } public void pauseApp(){ } public void destroyApp(boolean unconditional){}

public void run(){ int hitung = 0; while(hitung++ < 10){ gog.setValue(hitung); try{ Thread.sleep(1000); }catch(InterruptedException ie){} } gog.setLabel("Proses telah selesai"); }

Class ChoiceGroup ChoiceGroup dan List adalah dua komponen yang mirip dimana memberikan user kumpulan pilihan yang dapat dipilih satu atau lebih dari pilihan tersebut ChoiceGroup adalah sebuah Item yang digunakan sebagai bagian dari Form, sedangkan List berasal dari class Screen sehingga berdiri sendiri sebagai sebuah komponen dan ditampilkan dalam bentuk satu layar penuh

Terdapat dua tipe dari ChoiceGroup, dibedakan berdasarkan jumlah item di dalam grup yang dapat dipilih pada saat yang sama. Berikut adalah constructor-nya: public ChoiceGroup(String label, int choiceType); public ChoiceGroup(String label, int choiceType, String[] strings, Image[] images);

Parameter choiceType menerima satu dari beberapa nilai berikut, yang didefinisikan pada interface Choice, yang diimplementasi oleh ChoiceGroup: Choice.EXCLUSIVE –Membuat sebuah ChoiceGroup eksklusif dimana hanya dapat memilih satu item, sehingga berfungsi layaknya beberapa radio-button Choice.MULTIPLE –Membuat sebuah ChoiceGroup dengan beberapa pilihan, seperti sekumpulan checkbox yang dapat dipilih lebih dari satu

Berikut adalah contoh kodenya: Image merah = Image.createImage("/merah.png"); Image hijau = Image.createImage("/hijau.png"); Image biru = Image.createImage("/biru.png"); // Exclusive choice group String[] warna = new String[] {"Merah", "Hijau", "Biru"}; Image[] gbr = new Image[] {merah, hijau, biru}; ChoiceGroup exGroup = new ChoiceGroup("Pilih warna", ChoiceGroup.EXCLUSIVE, warna, gbr);

Setiap elemen dari ChoiceGroup terdiri dari sebuah string dan Image opsional yang ditampilkan di dekat string, walaupun tidak diwajibkan untuk menampilkan Image. Ketika menggunakan constructor untuk menginisialisasi sebuah ChoiceGroup, terdapat beberapa aturan berikut: –Argumen string atau elemen array strings tidak boleh kosong (null). Batasan ini menyatakan bahwa item berupa gambar saja tidak diperbolehkan –Argumen image boleh null jika gambar tidak diperlukan

–Jika argumen images tidak null, maka harus memiliki jumlah elemen yang sama dengan array strings. Image pada index ke-N pada array images bersesuaian dengan string pada elemen ke-N dari array strings. –Gambar harus berukuran tetap dan elemen manapun pada array Images dapat null jika sebuah gambar tidak diperlukan pada item ChoiceGroup tersebut

Cara alternatif untuk menginisialisasi sebuah ChoiceGroup adalah dengan menambahkan properti komponen setelah constructor selesai dijalankan: ChoiceGroup chgMulti = new ChoiceGroup("Pilihan", ChoiceGroup.MULTIPLE); chgMulti.append("Ingat Password", null); chgMulti.append("Cek Update", null); chgMulti.append("Simpan History", null);

Metode append() menyediakan baik argumen string dan image (opsional) seperti berikut: public int append(String string, Image image); Argumen string pada metode ini tidak boleh null. Argumen image dapat null jika gambar tidak diperlukan, jika tidak null, maka Image yang disertakan memiliki ukuran yang tetap Nilai yang dikembalikan oleh metode ini adalah index dari item yang dimasukkan ke dalam ChoiceGroup

Pada potongan contoh kode di atas, pemanggil pertama dari metode ini akan mengembalikan nilai 0, kedua bernilai 1, dan seterusnya Metode append() adalah satu di antara metode lain dari interface Choice yang dapat digunakan untuk mengubah isi dari ChoiceGroup Perubahan pada status seleksi dari sebuah elemen ChoiceGroup dilaporkan ke ItemStateListener dari Form dimana ChoiceGroup ditampilkan Pada ChoiceGroup bertipe MULTIPLE, notifikasi diberikan setiap kali sebuah elemen dipilih atau di- non-pilih

Perlu diketahui elemen mana dari ChoiceGroup yang dipilih. ChoiceGroup memiliki tiga metode yang dapat digunakan untuk mendapatkan status pilihan: public boolean isSelected(int index); public int getSelectedIndex(); public int getSelectedFlags(boolean[] flags); Metode isSelected() mengembalikan nilai true jika elemen dengan index yang diberikan berada pada status terpilih dan mengembalikan nilai false jika tidak terpilih

Metode ini sering digunakan pada ChoiceGroup bertipe MULTIPLE, dimana setiap checkbox mewakili sebuah aksi program yang berbeda. Kode berikut memberikan contohnya: public static final int USE_SSL = 0; public static final int RECONNECT_ON_FAIL = 1; public static final int TRACING_ENABLED = 2;.... do { if (multiChg.isSelected(USE_SSL)) { // Connect using SSL } else { // Connect using vanilla sockets }

if (failed && multiChg.isSelected(TRACING_ENABLED)){ // Log failure } }while(failed && multiChg.isSelected(RECONNECT_ON_FAIL));

Pada ChoiceGroup bertipe EXCLUSIVE, karena hanya dapat memiliih satu elemen, maka metode setSelectedIndex() dapat digunakan untuk menentukan index-nya: public static final int RED = 0; public static final int GREEN = 1; public static final int BLUE = 2;.... int index = exGroup.getSelectedIndex(); if (index == RED) { // jalankan aksi tertentu }

Metode ini selalu mengembalikan nilai -1 jika dipanggil pada ChoiceGroup bertipe MULTIPLE karena dapat lebih dari satu elemen yang dipilih Juga mengembalikan nilai -1 jika ChoiceGroup tidak memiliki elemen sama sekali (dalam prakteknya ChoiceGroup selalu memiliki elemen) Untuk mendapatkan status seleksi dari setiap elemen pada ChoiceGroup, maka metode getSelectedFlags() dapat digunakan Metode ini membutuhkan sebuah array bertipe boolean minimal memiliki jumlah elemen yang sama dengan jumlah item pada ChoiceGroup

Metode ini mengisi array dengan nilai true/false sesuai dengan status seleksi dari item-item pada ChoiceGroup Nilai yang dikembalikan adalah jumlah item yang terseleksi Sebelum menjalankan metode ini, perlu untuk mengalokasikan sebuah array boolean dengan ukuran yang sesuai Jika jumlah elemen pada ChoiceGroup tidak tetap, maka dapat digunakan metode size() untuk mendapatkan jumlah elemennya:

boolean[] flags = new boolean[multiChg.size()]; int count = multiChg.getSelectedFlags(flags); do { if (flags[USE_SSL]) { // Connect using SSL } else { // Connect using vanilla sockets } if (failed && flags[TRACING_ENABLED]) { // Log failure } }while(failed && flags[RECONNECT_ON_FAIL]);

Untuk mendapatkan nilai dari elemen di dalam ChoiceGroup, dapat digunakan metode getString() : public String getString(int index); Kode berikut memberikan nilai “Merah”, “Hijau”, atau “Biru”: String color = exGroup.getString(exGroup.getSelectedIn dex()); Berikut adalah contoh penanganan perubahan seleksi pada komponen ChoiceGroup atau List:

//Menangani seleksi pada Choice private void urusSeleksi(Choice choice){ int count = choice.size(); boolean[] states = new boolean[count]; int selCount = choice.getSelectedFlags(states); if (selCount > 0) { System.out.println("Item terpilih:"); for (int i = 0; i < count; i++) { if (states[i]) { System.out.println("\t" + choice.getString(i)); }

else { System.out.println("Tdk ada yg terpilih"); } int selectedIdx = choice.getSelectedIndex(); System.out.println("Index dari itemnya: " + selectedIdx); }

Metode ini dipanggil dari ItemStateListener yang terhubung ke Form yang memiliki ChoiceGroup, diberikan sebuah argumen bertipe Choice (bukan ChoiceGroup) Ketika dijalankan, kode tersebut mengirim referensi ke ChoiceGroup. Hal ini dapat dterima, karena ChoiceGroup mengimplementasi interface Choice Kelebihannya adalah metode ini dapat pula digunakan untuk menangani perubahan seleksi yang terjadi pada komponen List, yang juga mengimplementasi Choice

Bagian pertama dari kode ini menggunakan metode getSelectedFlags() untuk mendapatkan elemen-elemen yang dipilih kemudian mencetaknya lewat perulangan Bagian kedua dari kode ini menggunakan metode getSelectedIndex() untuk mengakses langsung index dari item yang dipilih dan hanya digunakan pada ChoiceGroup bertipe EXCLUSIVE

Status seleksi dari elemen pada sebuah ChoiceGroup dapat diubah secara programatik lewat metode berikut: public void setSelectedIndex(int index, boolean selected); public void setSelectedFlags(boolean[] flags); Pada ChoiceGroup bertipe MULTIPLE, metode ini memilih atau tidak memilih elemen pada index yang diberikan, bergantung pada nilai argumen selected

Pada ChoiceGroup bertipe EXCLUSIVE, metode ini efektif hanya jika argumen selected bernilai true. Elemen pada index tersebut akan terpilih dan elemen sebelumnya berubah statusnya menjadi tidak terpilih Jika argumen selected bernilai false, pemanggilan metode tersebut akan diabaikan, karena ChoiceGroup bertipe EXCLUSIVE harus selalu memiliki elemen yang terpilih Status seleksi dari seluruh elemen pada ChoiceGroup dapat diubah dengan memanggil metode setSelectedFlags()

Metode tersebut memberikan sebuah array boolean yang berisi nilai true untuk elemen- elemen yang ingin dipilih dan false untuk yang tidak dipilih Array boolean harus memiliki isi untuk tiap elemen pada ChoiceGroup: public boolean[] initState = new boolean[3]; //hanya elemen RECONNECT_ON_FAIL saja initState[RECONNECT_ON_FAIL] = true; multiChg.setSelectedFlags(initState);

Pada ChoiceGroup bertipe MULTIPLE, elemen dari argumen array selected manapun dapat diberi nilai true Pada ChoiceGroup bertipe EXCLUSIVE, argumen array selected hanya memiliki satu elemen yang bernilai true, jika tidak, maka berlaku aturan berikut: –Jika array tidak memiliki elemen yang bernilai true, maka elemen pertama pada ChoiceGroup yang terseleksi –Jika array memiliki lebih dari satu elemen yang bernilai true, maka elemen array pertama yang memiliki nilai true yang efektif terhadap elemen ChoiceGroup

Isi ChoiceGroup dapat diubah kapanpun menggunakan metode berikut: public int append(String string, Image image); public void insert(int index, String string, Image image); public void set(int index, String string, Image image); public void delete(int index);

Metode append(), menambahkan sebuah elemen baru pada akhir ChoiceGroup. Metode insert(), menambahkan dengan cara menyisipkan elemen baru sesuai argumen index Penggunaan metode append() sama dengan metode insert() pada kode berikut: multiChg.insert(multiChg.size(), "Isi baru", null); Index penyisipan yang lebih besar dari size() adalah salah dan akan memberikan error IndexOutOfBoundsException

Argumen image dapat bernilai null jika tidak diperlukan gambar, tetapi argumen string tidak boleh null Sebuah elemen dapat dihapus dari ChoiceGroup menggunakan metode delete() : public void delete(int index); Mengganti sebuah item menggunakan metode set() akan memberikan item yang baru status terseleksi sebagaimana item yang ditimpanya Penghapusan salah satu item tidak mempengaruhi index item ChoiceGroup yang terseleksi

Aplikasi Demo ChoiceGroup 1 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class DemoChoice extends MIDlet{ private Display disp; private Form frm; private ChoiceGroup chg; public DemoChoice(){ disp = Display.getDisplay(this); }

public void startApp(){ frm = new Form("Demo ChoiceGroup"); chg = new ChoiceGroup("Pilih Saja", ChoiceGroup.MULTIPLE); chg.append("Nasi kuning", null); chg.append("Coto", null); chg.append("Gado-gado", null); chg.append("Sate ayam", null); chg.append("Gulai kambing", null); frm.append(chg); disp.setCurrent(frm); }

public void pauseApp(){} public void destroyApp(boolean unconditional){} }

Aplikasi Demo ChoiceGroup 2 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.ChoiceGroup; import java.io.IOException; public class DemoChoice extends MIDlet{ private Display disp; private Form frm; private ChoiceGroup chg; private String[] str = new String[] {"Merah", "Hijau", "Biru"}; private Image merah, hijau, biru; private Image[] gbr;

public DemoChoice(){ disp = Display.getDisplay(this); } public void startApp(){ frm = new Form("Demo ChoiceGroup"); try{ merah = Image.createImage("/merah.png"); hijau = Image.createImage("/hijau.png"); biru = Image.createImage("/biru.png"); }catch(IOException ioe){ System.out.println("Gambar tidak ada!"); } gbr = new Image[] {merah, hijau, biru};

chg = new ChoiceGroup("Pilih Warna", ChoiceGroup.EXCLUSIVE, str, gbr); frm.append(chg); disp.setCurrent(frm); } public void pauseApp(){} public void destroyApp(boolean unconditional){} } Catatan: buat terlebih dahulu 3 buah file gambar (PNG) berukuran 10x10 pixel dengan nama file masing-masing “merah.png”, “hijau.png”, dan “biru.png” kemudian disimpan di dalam folder “res”