As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com Komponen Class Item (3) As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com.

Slides:



Advertisements
Presentasi serupa
Kelas & Objek.
Advertisements

STRUKTUR DATA (5) Pointer dan Function
MIDlet User Interface (3) 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
Antarmuka Tingkat Bawah (Canvas)
Flow Control & Exception Handling
Web Teknologi 3 (MKB721C) Minggu 2 Page 1 MINGGU 2 Web Teknologi 3 (MKB721C) Pokok Bahasan: –Midlet –User Interface Tujuan Instruksional Khusus: Agar.
Komponen Class Item (3) As’ad Djamalilleil
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
Struktur Kode Aplikasi Java (1)
PEMOGRAMAN APLIKASI BERGERAK (Java ME)
Komponen-Komponen dalam J2ME
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME) “Skill to do comes of doing. “ (Ralph Waldo Emerson)
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.
Exceptional Pendahuluan Bugs dan error dalam sebuah program sangat sering muncul meskipun program tersebut dibuat oleh programmer berkemampuan tinggi.
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.
Kelas A dapat memiliki referensi ke obyek dari kelas- kelas lain sebagai anggota. Kadang-kadang disebut sebagai hubungan “has-a”. Sebagai contoh, sebuah.
JAVA ARRAY.
High Level User Interface
Pemprograman Berorientasi Objek
Java array.
Struktur Kontrol Pemilihan
Pertemuan 5 Tipe Data, Operator, Tata Bahasa
MIDP High-Level User Interface
Array Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam.
ARRAY Siti Mukaromah,S.Kom.
Java array.
Siti Mukaromah,S.Kom,MCP
MOBILE TECNOLOGY (J2ME)
Java array.
Form & Item Oleh : Oman Somantri S.Kom
As’ad Djamalilleil Elemen Dasar Java As’ad Djamalilleil
MIDlet User Interface (2)
As’ad Djamalilleil Function (method) As’ad Djamalilleil
Struktur Kode Program MIDlet
As’ad Djamalilleil Komponen Class Item (2) As’ad Djamalilleil
As’ad Djamalilleil Class dan Object As’ad Djamalilleil
As’ad Djamalilleil Komponen Class Item (1) As’ad Djamalilleil
As’ad Djamalilleil Array (Larik) As’ad Djamalilleil
As’ad Djamalilleil Array As’ad Djamalilleil
As’ad Djamalilleil Sintaks Dasar As’ad Djamalilleil
As’ad Djamalilleil Package As’ad Djamalilleil
Review Materi Java Fundamental
As’ad Djamalilleil Multithreading As’ad Djamalilleil
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
Instalasi JME & Uji Coba
Mobile Teknologi Pertemuan 2
Java array.
Struktur Kontrol Pemilihan
Java array.
Pemrograman Berorientasi Objek
Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian.
Transcript presentasi:

As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com Komponen Class Item (3) As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com

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 initialValue interactive 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); 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 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]);

Kode berikut memberikan nilai “Merah”, “Hijau”, atau “Biru”: 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.getSelectedIndex()); 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()

Array boolean harus memiliki isi untuk tiap elemen pada ChoiceGroup: 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, 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”