• Tidak ada hasil yang ditemukan

P4 Bab 4 User Interface

N/A
N/A
Protected

Academic year: 2021

Membagikan "P4 Bab 4 User Interface"

Copied!
19
0
0

Teks penuh

(1)

P4

Bab 4 – User Interface

4.1 Tujuan

Mahasiswa mengerti dasar-dasar mobile computing dan mampu memprogramnya.

4.2 Materi

1.

User Interface

2.

Struktur GUI dalam MIDP

3.

Paket javax.microedition.lcdgui

4.

Arsitektur LCDUI

5.

Class High Level API

6.

Class Low Level API

4.3 User Interface

User interface menjadi kebutuhan yang sangat penting dalam pemrograman mobile. Berbeda

dengan aplikasi desktop tentunya, kebutuhan UI di mobile tidak akan mengenal mouse dan

keyboard melainkan diganti dengan keypad.

Class's dasar yang dibutuhkan dalam pemrograman mobile disimpan dalam konfigurasi

CLDC, yang harus dilengkapi pada bagian profile.

CLDC tidak mendefinisikan class yang dibutuhkan untuk fungsional GUI, class's yang

diperlukan untuk pembuatan GUI dalam J2ME dikembangkan oleh JCP (Java Community

Process) yang telah dimasukkan di dalam profile seperti MIDP.

AWT (Kenapa Tidak Digunakan ?)

Alasan :

AWT didesain dan dioptimasi untuk pengembangan aplikasi desktop.

Banyak sekali fitur yang disediakan di dalam paket AWT, sehingga secara

otomatis membutuhkan penggunaan memory yang besar. Padahal seperti yang

kita tahu bahwa perangkat mobile mempunyai memory dan media penyimpanan

yang sangat terbatas.

(2)

4.4 Struktur GUI dalam MIDP

Struktur GUI dalam MIDP dibagi menjadi dua bagian :

High level API

Digunakan untuk pembuatan window/widget.

Terdiri dari komponen Container dan Item.

Class yang digunakan dalam level ini standard untuk keperluan UI, seperti Form,

TextBox, List, Alert, dan sebagainya.

Low Level API,

Digunakan untuk pembuatan canvas dan pixel

Mempunyai kendali penuh terhadap pembuatan komponen maupun interaksi

komponen dengan user.

Class yang digunakan di level ini adalah class Cancas beserta turunannya

GameCanvas.

4.5 Paket javax.microedition.lcdgui

Semua class untuk kebutuhan GUI di dalam MIDP disimpan dalam paket lcdui.

Maka dari itu, untuk menggunakan paket lcdui dalam pembuatan aplikasi, sebelumnya paket

tersebut harus diimport terlebih dahulu :

import javax.microedition.lcdgui.*;

Paket lcdui terdiri dari beberapa interface dan class, daftar interface yang disediakan di

dalam paket lcdui, dapat dilihat pada Tabel 4.1. Sedangkan daftar class yang disediakan di

dalam paket lcdui, dapat dilihat pada Tabel 4.2.

Tabel 4.1 Interface dalam paket lcdui

Interface Keterangan

Choice Digunakan untuk mendefinisikan API sebagai komponen UI yang mengimplementasikan pemilihan dari sejumlah piihan yang didefinisikan.

CommandListener Digunakan oleh aplikasi-aplikasi yang perlu menerima event-event level tinggi.

ItemStateListener Digunakan oleh aplikasi-aplikasi yang menerima event yang mengindikasikan perubahan keadaan (state) dari item yang terdapat di dalam object form.

(3)

Tabel 4.2 Class dalam paket lcdui

Interface Keterangan

Alert Notifikasi, menampilkan data dalam jengka waktu tertentu sebelum kembali ke layar sebelumnya. AlertType Mendefinisikan tipe-tipe dari object Alert yang akan ditampilkan.

Canvas Class dasar yang digunakan oleh aplikasi-aplikasi yang membutuhkan event level rendah atau untuk proses peggambaran.

ChoiseGroup Sekumpulan elemen pemilihan yang ditampilkan di form.

Command Konstruksi yang membungkus informasi-informasi mengenai akses yang dilakukan oleh user. CommandItem Digunakan untuk membuat elemen user interface baru yang akan ditempatkan di form. DateField Komponen yang digunakan untuk menampilkan tanggal dan waktu.

Display Komponen yang digunakan untuk mampresentasikan manager tampilan. Displayable Object yang memiliki kemampuan yang dapat ditempatkan pada layar tampilan.

Font Komponen yang digunakan untuk mempresentasikan format font yang akan ditampilkan di layar. Form Object layar yang dapat ditambahkan dengan item-item yang lain.

Gauge Mengimplementasikan tampilan grafish yang menunjukkan nilai tertentu yang ditempatkan ke dalam sebuah form.

Graphics Menyediakan kemampuan menggambar di object canvas. Image Menyimpan data dalam format gambar.

ImageItem Menyediakan control layout terhadap gambar-gambar yang ditampilkan dalam form. Item Class dasar untuk komponen-komponen yang ditempatkan di dalam form.

List Menampilkan layar yang berisi daftar pilihan.

Screen Class dasar dari semua komponen layar dalam user interface level tinggi. StringItem Item yang bersisi string yang ditempatkan di form.

TextBox Menampilkan layar yang mengizinkan user untuk mengedit teks. TextField Komponen untuk menginputkan teks yang ditempatkan di atas form.

Ticker Teks yang berjalan terus-menerus di layar, setiap tipe layar dapat ditambahkan dengan object Ticker selain Canvas.

(4)

4.6 Arsitektur LCDUI

Gambar 4.1 Struktur komponen MIDlet (LCDUI)

Class Display

Class display merupakan class inti dari sebuah MIDP UI, class display inilah yang

akan ditampilkan di layar perangkat mobile.

Deklarasi method getDisplay() :

public static Display getDisplay (MIDlet m)

Method yang terdapat di dalam class Display dapat digunakkan untuk menampilkan

object-object turunan dari class Displayable ke layar.

Object Displayable ini merepresentasikan sebuah tampilan layar.

Object Displayable ini merepresentasikan sebuah tampilan layar, misalnya

seperti Form, TextBox, dll.

Perhatikan kembali contoh program :

private Display display;

Penggalan program di atas digunakan untuk mendeklarasikan variable dengan

Object Ticker Displayable Command Item Display Canvas Screen Form List Alert TextBox StringItem ImageItem ChoiceGroup Gaube DataField TextField CustomItem Spacer GameCanvas extends extends extends extends Extends adding

(5)

nama display yang mengacu ke class Display.

Selanjutnya untuk mendapatkan instance/pembuatan dari class Display dan

menyimpannya ke dalam variabel display, digunakan method getDisplay()

pada saat constructor HelloMIDlet, seperti berikut :

1 2 3 4 public HelloMIDlet() { display=Display.getDisplay(this); }

Key this menunjukkan object HelloMIDlet, sehingga dapat juga ditulis seperti

berikut :

1 2 3 4 public HelloMIDlet() { display=Display.getDisplay(HelloMIDlet); }

Object Displayable hanya boleh ditampilkan sekali dalam waktu yang sama

(misalnya object Form & TextBox). Sehingga untuk memilih object yang

akan ditampilkan di layar digunakan method setCurrent() dengan deklarasi

seperti berikut :

Public void setCurrent(Displayable d)

public void setCurrent (Alert a, Displayable d)

Sebagai contoh, perhatikan penggalan program berikut.

1 2 3 4 5 6

public void startApp() {

TextBox sq =

new TextBox("Hello MIDlet-J2ME", "Hello FTI UMBY ..!", 256, 0); display.setCurrent(sq);

}

Keterangan :

Pada saat aplikasi dijalankan, object Displayable akan ditampilkan di

layar dengan object sq, yang telah dideklarasikan sebagai object tb.

Jika ingin mendapatkan object yang sedang aktif (sedang ditampilkan di

layar), dapat digunakan method getCurrent() dengan deklarasi seperti

berikut :

(6)

Class Displayable

Class Displayable memiliki turunan class Screen dan Canvas.

Screen, untuk pembuatan aplikasi GUI yang didasarkan pada pembentukan

window/form.

Canvas, untuk pembuatan gambar, seperti kotak, lingkaran, dll.

Instance dari class Displayable dapat berisi beberapa object Command, yang berguna

untuk melakukan inisiasi aksi-aksi tertentu di dalam aplikasi.

Untuk mengeset obejct Item yang akan ditempatkan di dalam object Displayable,

dapat digunakan setCurrentItem() dengan deklarasi sebagai berikut.

public void setCurrentItem (Item item)

4.7 Class High Level API

Dibagi menjadi 2 kategori :

Turunan class Screen (Alert, TextBox, Form, List)

Turunan class Item (ChoiseGroup, Spacer, CustomItem, StringItem, ImageItem,

TextField, DateField, Gauge)

object-object turunan dari class Item selanjutnya akan ditampilkan dalam sebuah object

Form (tipe khusus dari class Screen).

Class Screen

Form

Seperti yang telah dibahas sebelumnya bahwa form merupakan tempat dari

object-object yang lain seperti TextField, Datefield, StringItem, ImageItem, Gauge, dll.

Form memiliki dua buah constructor, sebagai berikut :

Displayable Screen Form List Alert TextBox extends extends

(7)

1 Form (String title)

Constructor akan membuat instance dari class Form tanpa ada kontrol di

dalalmnya. (hanya akan membuat form kosong dengan judul)

2 Form (String title, Item[] items)

Constructor akan melewatkan kontrol-kontrol apa saja yang akan ditempatkan

ke dalam form pada saat membuat form baru. Kontrol-kontrol tersebut

disimpan dalam parameter items (merupakan array dari class Item).

Item-item di dalam form akan di indeks dengan 0 (bukan 1). dengan begitu item-item

tersebut dapat dimanipulasi (menambah, menghapus, mengganti).

Penambahan item ke dalam form dapat dilakukan dengan menggunakan

method append() atau insert() dari class Form.

Penghapusan item dapat dilakukan dengan menggunakan method delete()

atau deleteAll().

Penggantian item dapat dilakukan dengan menggunakan method set().

Pendeklarasian method :

1 2 3 4 5 6 7

public int append (Item items) public int append (String s) public int append (Image image)

public void insert (int itemNum, Item item) public void delete (int itemNum)

public void deleteAll ()

public void set (int itemNum, Item item)

Contoh program : P1_Form.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* * Program contoh implementasi penggunaan Form * @author : SQ

--- */ import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class P1_Form extends MIDlet implements CommandListener {

private Display display; private Form form1;

private Command cmdKeluar; //contructor

public P1_Form() {

display = Display.getDisplay(this);

cmdKeluar = new Command("Exit", Command.EXIT, 1); }

(8)

21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

public void startApp() {

form1 = new Form("Contoh Form"); //membuat form

// menambahkan teks ke dalam form form1.append("Identitas Pribadi"); form1.append("========================"); form1.append(" NIM = 10111071 ");

form1.append(" Nama = Annisa Retno Sari ");

form1.append(" Program Studi = Teknik Informatika "); // menambahkan Command ke dalam form

form1.addCommand(cmdKeluar); form1.setCommandListener(this); display.setCurrent(form1); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

notifyDestroyed(); }

public void commandAction(Command cmd, Displayable disp) { if (cmd == cmdKeluar) { destroyApp(false); } } }

(9)

Alert

Ilustrasi :

misalnya pada aplikasi desktop, terdapat object yes/no yang digunakan untuk

menampilkan pesan-pesan tertentu misalnya seperti : peringatan, konfirmasi,

error.

Alert ditampilkan dengan jangka waktu tertentu.

Alert memiliki dua buah constructor :

1 Alert (String title)

Costructor akan melakukan inisiasi object alert dengan parameter title.

2 Alert (String title, String allertText, Image alertImage, AlertType alertType)

Contructor mengijinkan untuk menampilkakn teks, gambar dan tipe Alert

yang akan ditampilkan.

Tipe Alert direpresentasikan oleh class AlertType, MIDP memiliki lima buah

type Alert yang didefinisikan sebagai field static di dalam class AlertType,

tipe-tipe Alert tresebut antara lain :

ALARM

CONFIRMATION

ERROR

INFO

WARNING

Untuk menentukan lama object Alert akan ditampilkan dapat digunakan

method setTimeout() yang terdapat di dalam class Alert. Deklarasinya adalah

sebagai berikut :

Public void setTimeout(int time)

time >> merupakan parameter bertipe int yang digunakan untuk menentukan

lama Alert akan ditampilkan di layar.

Contoh program : P2_Alert.java 1 2 3 4 5 6 7 8 /* * Program contoh implementasi penggunaan Alert * @author : SQ

--- */ import javax.microedition.lcdui.*;

(10)

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 66 67 68 69 70 71 72

public class P2_Alert extends MIDlet implements CommandListener {

private Display display; private Form form; private Alert alert; private Command cmdKeluar; private Command cmdAlert; // constructor

public P2_Alert() {

display = Display.getDisplay(this); // membuat form

form = new Form("Contoh Alert"); // menambahkan teks ke dalam form

form.append("Contoh implementasi penggunaan Alert"); // membuat dua buah Command, "Exit" dan "Alert" cmdKeluar = new Command("Exit", Command.EXIT, 1); cmdAlert = new Command("Alert", Command.SCREEN, 2); // menambahkan Command ke dalam form

form.addCommand(cmdKeluar); form.addCommand(cmdAlert); form.setCommandListener(this); }

public void startApp() {

display.setCurrent(form); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

// mendefinisikan method untuk membuat dan menampilkan Alert private void showAlert()

{

String info = "Info : \n Ini merupakan contoh Penggunaan Alert "; // membuat instance dari kelas Alert

alert = new Alert("Informasi", info, null, AlertType.ALARM); // mengeset berapa lama Alert akan ditampilkan

alert.setTimeout(5000); // 5000 ms = 5 s // menampilkan Alert

display.setCurrent(alert, form); }

public void commandAction(Command cmd, Displayable disp) {

if (cmd == cmdKeluar) {

destroyApp(true); notifyDestroyed();

(11)

73 74 75 76 77 78 79 } else if (cmd == cmdAlert) {

showAlert(); // memanggil method showAlert() }

} }

(12)

TextBox

Ilustrasi :

misalnya pada saat mengirim SMS, Anda akan melihat layar inputan kosong,

layar tersebut dibuat dengan menggunakan TextBox.

Constructor dari TextBox akan dideklarasikan :

1 TextBox(String title, String text, int MaxSize, int constraints)

Keterangan :

Parameter Keterangan

title Judul TextBox

text Teks yang akan ditampilkan pada saat inisiasi awal

MaxSize Jumlah maksimum karekter yang dapat ditampilkan di TextBox

contraint Batasan untuk menentukan karakter-karakter apa saja yang dapat diinputkan ke dalam TextBox

Contraint di dalam TextBox (yang selanjutnya didefinisikan sebagai field), dapat

dilihat pada tabel berikut.

Constraint Keterangan

ANY Sembarang karakter atau teks apapun

EMAILADDR Hanya diizinkan untuk menulis teks yang berupa alamat email

NUMERIC Hanya diizinkan untuk menulis bilangan bulat, tetapi karakter pertama dapat berupa tanda minus.

PASSWORD Teks yang dituliskan akan terlihat dalam bentuk password (*). PHONENUMBER Hanya diizinkan untuk menulis nomor telepon

URL Hanya diizinkan untuk menulis alamat website dalam bentuk URL (Uniform Resource Locator) Contoh program : P3_TextBox.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* * Program contoh implementasi penggunaan TextBox * @author : SQ

--- */ import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class P3_TextBox extends MIDlet implements CommandListener {

private Display display; private TextBox textbox1; private Form form1;

(13)

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

private Command cmdInfoTeks; private Command cmdKembali; public P3_TextBox()

{

display = Display.getDisplay(this);

textbox1 = new TextBox("Contoh TextBox", null, 256, TextField.ANY); cmdKeluar = new Command("Exit", Command.EXIT, 1);

cmdInfoTeks = new Command("Info Text", Command.SCREEN, 2); cmdKembali = new Command("Back", Command.SCREEN, 2);

textbox1.addCommand(cmdKeluar); textbox1.addCommand(cmdInfoTeks); textbox1.setCommandListener(this); }

public void startApp() {

display.setCurrent(textbox1); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command cmd, Displayable disp) { if (cmd == cmdKeluar) { destroyApp(true); notifyDestroyed(); } else if (cmd == cmdInfoTeks) {

form1 = new Form("Infor Text");

form1.append("Text yang di inputkan: " + textbox1.getString() + "\n"); form1.append("Jumlah karakter: " + textbox1.size() + "\n");

form1.append("Posisi cursor: " + textbox1.getCaretPosition()); form1.addCommand(cmdKembali); form1.setCommandListener(this); display.setCurrent(form1); } else if (cmd == cmdKembali) { display.setCurrent(textbox1); } } }

(14)

List

Bentuk contructor dari class List :

1 List (String title, int ListType)

Constructor pertama hanya membuat List kosong dengan judul dan tipe.

Sehingga harus dimanipulasi sendiri dengan menggunakan method-method

tertentu melalui source code.

Method Keterangan

append() Menambahkan item dan menempatkannya diposisi terakhir

insert() Menambahkan item dan menempatkannya di posisi sebelum posisi item yang sedang dipilih (aktif)

delete() Menghapus item yang sedang dipilih

deleteAll() Menghapus semua item yang terdapat di dalam object List

2 List (String title, int listType, String[] choises, Image[] images)

Constructor tersebut mempunyai dua buah parameter choises (yang berfungsi

melewatkan item-item yang akan diisikan) dan parameter images (yang

berfungsi menyimpan dafar gambar icon dari item-item yang akan

diinputkan)

(15)

Tipe Keterangan EXCLUSIVE Berupa radio button (hanya dapat dipilih salah satu) MULTIPLE Berupa check box (dapat dipilih lebih dari satu) IMPLICIT Berupa list standar yang paling banyak digunakan.

Untuk mengetahui item yang sedang dipilih, class List mendefinisikan tiga buah

method :

1 2 3

public int getSelectedIndex()

public getSelectedFlags(boolean[] selected) public boolean isSelected (int elementNum)

Method 1 : digunakan untuk mendapatkan indeks dari item aktif yang sedang

dipilih dalam List dengan tipe EXCLUSIVE atau IMPLICIT.

Method 2 : digunakan untuk mendapatkan flag dari item-item yang sedang

dipilih dalam List dengan tipe MULTIPLE. Selanjutnya nilai yang didapat

akan ditampung di dalam array yang dilewatkan sebagai parameternya.

Method 3 : digunakan untuk memerikasa apakah item dengan indeks tertentu

sedang dipilih atau tidak, yang selanjutnya indeks tersebut dimasukkan

sebagai input parameter.

Dalam bekerja dengan List, diijinkan untuk melakukan pilihan terhadap item-item

yang ada melalui kode program secara langsung dengan menggunakan method

setSelectedIndex() dan setSelectedFlag(). Deklarasi :

1

2 public void setSelectedIndex(int elementnum, boolean selected)public void setSelectedFlag(boolean[] selected) Contoh program : P4_ListImplicit.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* * Program contoh implementasi penggunaan Implicit List * @author : SQ

--- */ import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class P4_ListImplicit extends MIDlet implements CommandListener {

private Display display; private List list1; private Command cmdPilih; private Command cmdKembali;

public P4_ListImplicit() {

(16)

18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 display = Display.getDisplay(this); }

public void startApp() {

// membuat daftar command yang akan digunakan

cmdPilih = new Command("Select", Command.SCREEN, 2); cmdKembali = new Command("Back", Command.EXIT, 1); // membuat gambar icon untuk setiap item List Image img; try { img = Image.createImage("/dnd.png"); } catch (Exception e) { img = null; }

// membuat List dengan tipe IMPLICIT

list1 = new List("List Tipe IMPLICIT", Choice.IMPLICIT); list1.append("Pilihan I", img);

list1.append("Pilihan II", img); list1.append("Pilihan III", img); list1.append("Pilihan IV", img); list1.addCommand(cmdPilih); list1.addCommand(cmdKembali); list1.setCommandListener(this); display.setCurrent(list1); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

notifyDestroyed(); }

public void commandAction(Command cmd, Displayable disp) { if (cmd == cmdKembali) { destroyApp(false); } else {

int indeks = list1.getSelectedIndex(); Alert info = new Alert("Informasi");

info.setString("Anda memilih: " + list1.getString(indeks)); info.setTimeout(Alert.FOREVER);

display.setCurrent(info, list1); }

} }

(17)

4.8 Evaluasi

Pada contoh program TextBox, modifikasilah program tersebut dengan menambahkan penggunaan

method :

1 2 3

public void delete (int offset, int length) public void insert (String src, int position) public void setString(String text)

(18)
(19)

Note :

Gambar

Tabel 4.1 Interface dalam paket lcdui
Tabel 4.2 Class dalam paket lcdui
Gambar 4.1 Struktur komponen MIDlet (LCDUI)

Referensi

Dokumen terkait

Perbedaan kelembaban diluar dan didalam arboretum disebabkan oleh adanya kondisi vegetasi di dalam arboretum menyebabkan penguapan terhambat sehingga kandungan air tidak

Sifat resin komposit dipengaruhi oleh jumlah partikel bahan pengisi, jenis partikel bahan pengisi, efisiensi proses berikatannya partikel bahan pengisi dengan matriks resin,

Dalam merencakan terapi kenali terlebih dahulu gejala yang dominan pada pasien anda, asas manfaat dan resiko terapi yang akan anda berikan, trias (gejala sasaran,

Kus (41 tahun) dengan keluhan tinnitus tanpa vertigo dan pendengaran menurun sejak empat hari sebelumnya, didiagnosis SNHL telinga kiri dengan PTA 93,75 dB

Dalam melaksanakan tugas, fungsi, dan kewenangan sebagaimana dimaksud dalam Pasal 8, Pasal 9, dan Pasal 10, Menko Perekonomian mengkoordinasikan Menteri yang memimpin

Dalam studi manajemen, kehadiran konflik pendidikan tidak bisa terlepas dari permasalahan keseharian yang dirasakan oleh pengelola lembaga pendidikan. Konflik tersebut

Sesuai bunyi Pasal 2 ayat (1) Keputusan Presiden Nomor 56 Tahun 2004 bahwa "Organisasi, administrasi, dan financial pada Pengadilan dalam lingkungan Peradilan Militer

Dengan melihat nilai probabilitas Jarque-Bera sebesar 0,048174 yang lebih rendah dari tingkat signifikasi yang digunakan dalam penelitian ini yaitu 5% atau 0,05, maka dapat