Kali ini gw coba bikin tutorial untuk membuat menu menggunakan Class Canvas, memang tidak ada salahnya membuat menu menggunakan Class List pake type List.IMPLICIT. Tapi dengan menggunakan Canvas gw lebih leluasa untuk membuat menu sesuai dengan yang gw mau, istilahnya tidak terbatas dengan pilihan yang ada di Class List.
Rencananya cukup sederhana, gw mau bikin menu yang bisa di pilih pake tombol panah atas ama bawah, trus menunya tuh punya gambar norak yang sering mungcul di blog gw.
Sebelumnya gw mau ngasih info dulu spesifikasi gw waktu bikin menu ini,
OS : Microsoft windows vista asli
IDE : Eclipse yang udah di install plugins elipse me
Java : versi 1.6.0 pake emulator dari Sony Erricson
Spec diatas cuma informasi aja kok, dan kenapa gw pake eclipse karena gw dari dulu makenya eclipse. Gw pake netbean kalo lagi penasaran pengen membandingkan aja, alias iseng bukan kepalang.
Pertama yang gw lakukan adalah, gw bikin suatu Class turunan Canvas, yang nantinya akan kita tampilkan di Midlet kita. Lalu kita tulis logic kode menu yang kita inginkan pada method yang wajib di impelemtasi yaitu method paint.

Dari gambar diatas kita bisa liat kalau CanvasMenu adalah nama Classnya, statCursos adalah nama variable untuk menyimpan status kita sedang ada di menu yang mana. Sedangkan arrMenuText adalah variable yang menyimpan data text menu kita yang akan kita tampilan di layar. Kalau itsYpos adalah variable yang menyimpan status koordinay Y pada layar guna penggambaran menu. Untuk backgroundnya gw menggunakan variable background. Untuk melakukan pemanggilan terhadap gambar yang mana untuk background menu kita gw taroh di constructor dari Class CanvasMenu kita bisa liat
background = Image.createImage(“/bg.png”);
gw sendiri udah menyiapkan gampar bernama bg.png di recourse folder, kalian nanti bisa download file sourcenya.

Dari gambar adalah method paint yang memiliki parameter class Graphics yang bisa kita gunakan. Kode di atas menceritakan awalnya gw ngecek kalo background udah berhasil ke load di variable atau belum, kalau sudah maka akan menggambar ke layar dari posisi awal koordinat x=0 dan y=0 dengan posisi mepet atas dan kiri.
Lalu gw definisikan posisi koordinat y di variable itsYpos dengan nilai ¼ dari tinggi layar, dan melakukan looping pada arrMenuText, di setial looping gw cek nilai dari statCursor sedang ada di manakah beliau. Apabila cocok maka akan set warna jadi ungu dengan g.setColor(200,20,255) dan gambar kotak dengan g.fillRect() pada letak menu yang pas di cursornya, selanjutnya memberikan warna pada tulisan menu dengan warna biru dan mencetaknya. Lalu koordinat y naik sebesar 30 untuk melanjutkan menulis menu selanjutnya pada koordinay y yang baru.
Kalau gambar di atas adalam method keyPressed yang digunakan untuk memeriksa tombol yang kita tekan di ponsel kita, dari gambar di atas gw Cuma meriksa tombol panah atas dan bawah. Di dalamnya melakukan pengecekan untuk membuat cursor melakaukan seleksi pada menu yang tepat, tidak keluar dari arrMenuText yang ada, setelah itu gw refresh layar pake repaint().
Lalu kita tinggal menampilkan CanvasMenu kita di class Midlet kita seperti gambar di bawah ini.

Semoga tutorial kecil ini bisa berguna, dan kalau ada pertanyaan silahkan masukan di kolom komentar, gw coba jawab sebisa gw :p
Download Source code J2ME Tutorial, Membuat Menu di CanvasJ2ME Tutorial, Membuat Menu Grid di Canvas



56 komentar:
mas puput mau nanya nih
klu bikin game mobile bisa di eclips ngak
ato cuma di netbeans
makasih
bisa kok, download aja plugin nya di http://eclipseme.org buat ngonekin ke WTK nya. kalo saya pakenya plugin itu. coba aja moga2 sesuai
wow, developer J2ME rupanya..
8o
*garuk2 kepala* mode on
eclips ama netbeans itu apa ya put...?
lebih jago mana kalo diadu...?
Dasyat sobat
Saya mah gaptek urusan ginian :)
tutorialnya, mantab habis, mbak, informatif dan bermanfaat. tapi dasar sayanya myang gaptek, hiks, sdh ada tutorialnyam tapi ndak mudheng juga, hehe ....
mantap nih tutorialnya ... jadi pengen nyoba j2me ...
thank banget infonya mas
garuk kepala mode on*
ne pada ngomongin apa to?
aku ga ngerti soal ginian, hehe :D
eniwei, salam kenal, trims dah berkunjung ke blogku :)
@tiyas
aku cuma belajar aja kok
sekalian di tulis biar inget2 gak lupa.
@BlogSigit mengatakan...
jangan di adu mas.. kasihan hehehheh :)
@cucuharis
terima kasih :)
@sawali tuhusetya
terima kasih mas..
@Permana
silahkan2 mas
@ghenbiu
sama2 mas :)
@genial
mau di garukin :p
@wh
tutorial :)
@phiy
sama2 makasih mas
haduuuuh pusing gw liat koding java....
mata gw kung2 langsung...
tar dah di coba...
tp paling gag bisa ngahahahaha
ah.... ga ngerti put gw... ahahaha
@diana bochiel
coba aja di.. tnks.. :)
@Nee
hehehehe :p tnks ud liat2
syaratnya;
Windows vista asli?
huah..
puny gue asli gak ya?
*curiga*
Gue Pikir Puput Itu Lempengan bro.. ternyata Lo Batangan :D
@chaliciousgealgeol
huehehhe... :p
@baladika
wakakaka... maaf mengecewakan :D
wew... mantabh bro.....
wao, thx bngt wat tutorialnya :D
Wah mantep nih tutorialnya....
*bengong* gak ngertiiiiiiiiii =))
salam kenal. makasih tutorialnya. baru mulai belajar javaME. semangat terus bikin tutorialnya.
@Wisata SEO
makasih
@Edwin mengatakan...
sama2 mas edwin,
@buJaNG mengatakan...
makasih pak :)
@ichanx mengatakan...
:) dor
@cah bodoh cla_x
makasih, semoga berguna
salam kenal, mas. saya baru banget neh di dunia J2ME, sayangnya begitu juga dengan dunia JAVA. dunia kerja yang 'memaksa' saya masuk ke situ, hehehe... tapi ternyata menyenangkan juga ^_____^
saya udah coba code2 yang mas kasih di atas, persis sama. tapi ada beberapa masalah:
1. (IOException e) ->
cannot find symbol
symbol: class IOException
location: class CanvasMenu
2. e.printStackTrace() ->
cannot find symbol
symbol: method printStackTrace()
location: class IOException
3. Display.getDisplay(this).setCurrent(cm) ->
getDisplay(...) in ... cannot be applied to (CanvasMenu)
cannot find symbol
symbol: method setCurrent(CanvasMenu)
location: class ...
saya pake NetBeans. mohon petunjuk, mas. makasih ya :D
@berbagipikiran
salam kenal juga mas :)
kemungkinan error itu karena tidak menemukan file backgroundnya mas "bg.png" saya curiga itu karena ada error "IOException"
di sourcecode yang di atas itu kan terlalu banyak file lain. untuk memakai netbean mungkin setelah bikin project j2me baru mas copy aja langsung folder yang "src" dan "res"
semoga membantu :)
mas,ada gk referensi buat setting sound (on,off) pake canvas?thanxb4
@mamah
di fungsi keyPressed(int keyCode)
ditambahkan aja else disana
else if (getGameAction(keyCode) == FIRE)
{
//misalnya index untuk text Off Suara =0
if (statCursor == 0)
{
//Panggil fungsi untuk off suaranya
}
}
semoga berhasil
apikkkk mantaff brooo
@bim
trima kasih mas bim, :)
kl mau buat next - previous di menunya gimana bang???
mas, kalo pakenya wireless toolkit apa juga bisa dengan source kode ini?
saya sudah coba,buildnya sukses tapi pas dijalanin di emulator tampilannya gak keluar dan keluar error seperti ini "Exception:java.lang.InstantiationException:Class not a midlet".
kenapa ya? apa ga cocok? hehe...nekad ya aku...
@anonim
ada Class Command itu bisa dipake buat next/previus atau kalo mau capture sendiri key next/previus di method keyPressed, nanti tinggal ubah2 layarnya.
@elya
bisa kok, hmmm saya sendiri males kalo pake WTK only, biasa pake IDE, mungkin di WTK ada settingan yang merujuk dimana Class turunan MIDletnya, nah mungkin kalo itu udah di set errornya ilang. heheh hebat berani nekat :p
ada contoh penggunaan gak bang???
kan menunya itu pke canvas,jd misal masuk menu 1,ntar bisa back lagi ke menu utama @_@
@anonim
mau make yang pake Command atau keyPressed
intinya keduanya sama, misalnya kita bikin ada 2 Canvas, nanti kalau dipilih salah satu tombol, Display nya di setCurrent() canvasNext atau canvasUtama
contohnya bro...
misal pke menu utamanya py dikau itu, trz aq buat 1 kelas lagi Tampilan1
cara munculin ke Tampilan1 itu gimana? trz kl dikasih BACK gimana...mksi bro sblmnya
udah utak atik tetep gak isa,prustasi daku...hehehehe
Class yang kamu buat itu turunan dari Displayable kan, nah untuk menampilkannya panggil
Display.getDisplay(midletNya).setCurrent(classNya)
semoga berhasil
bukan Displayable bang kelasnya,tp dia extends canvas gt,gimana manggilnya
iya turunan Canvas, dan Canvas itu turunan Displayable. jadi turunan Displayable itu ada Canvas ada Form dan ada List.. dan apa lagi yah.. lupa saya (kalo gak salah :p)
nah cara pakenya di setCurrent(Classnya), sama kaya menampilkan menu awal.
Semoga berhasi.
mas,nanya lagi...
taruh lah itu tampilan awal dah sukses (hehe...semoga,amin...).:p
trus cara hubungin ke selanjutnya gimana? ya istilah kerennya ke database nya gitu (kalo di j2me disebut RMS ya???)
bisa di contohin ga?
terima kasih atas bantuannya...
@elya
hmmm sory aku susah bayanginnya, maksudnya tampilan layar di hubungin ma database itu yg gimana yah
hehe...maaf mas,baru bales.kemarin lagi mudik!
maaf lahir batin ya...
bingung ya? aku juga jadi ikut bingung deh gimana ngomongnya.
gini aja,untuk sementara lupakan soal database.kita kembali ke tampilan..
kemarin aku dah buat 2tampilan. tampilan 1 sukses,dari tampilan 1 ini aku menuju tampilan 2 menggunakan command screen.
setelah aku running berhasil,tapi yang tampil cuma tampilan pertama,pas mau aktifin tampilan 2 cuma kedip-kedip aja.kenapa ya? trus bedanya command screen dan ok apa ya? terima kasih mas...:)
Klo dah tambah
else if (getGameAction(keyCode) == FIRE)
{
if (statCursor == 0) {
System.out.println("Test");
// aku view di output keluar tulisan Test
Cara nambah biar bisa akses form di Main.java gimana ya?
// Main.java
public void startMIDlet() {
switchDisplayable(null,getForm()); }
public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
Display display = getDisplay();
if (alert == null) {
display.setCurrent(nextDisplayable);
} else {
display.setCurrent(alert, nextDisplayable); }
}
soalnya klo ga via Canvas ini aku masukin di startApp() nya
initialize();
startMIDlet();
Makasih
@elya
bedanya cuma di letaknya aja kok, beda2 buat hp
@anonim
gini aja,
object Midlet nya kamu passing ke class Canvas kamu aja, nah perubahan display bisa kamu atur2 di canvas
cara buat diagram batang dengan canvas dari data di RMS gmn y???
thanks b4...^^
@Anonim
kalo udah bisa ambil data dari RMS, tinggal mainin drawRect atau fillRect aja, berkreasi bebas
Alo mas puput exist terus....
aku mau nanya nih, apakah bisa menu tersebut di tampilkan dari filemenu.txt yang kita taruh pada folder res? tujuannya adalah jika kita ingin menambahkan menu cukup hanya menambah list menu pada filemenu.txt tanpa menambah array "new String[]" pada source code dan tanpa merubah fungsi dari menu itu sendiri. mungkin ini nantinya dapat di implementsikan pada mobile learning atau mobile book. saya senang sekali jika mas puput bisa sharing dengan saya, ini email saya tiefanliu@gmail.com, thanks ya mas
@mooz
mau baca file di RES folder J2ME,
saya agak lupa sie,
tapi kira2
getClass().getResourceAsStream("filemenu.txt");
nanti dapet InputStream trus di looping read InputStream nya.
trus dapet byte, jadiin String, trus di Split sesuai sama delimeter di filemenu.txt. jadi deh array String nya.
wah... ada master J2ME :D
mo nanya nih... isa g capture image lewat J2ME?
kan aku mau buat nangkep gambar pake camera. tetapi klo pake getSnapshot() pasti akan mengembalikan byte[] sebesar ukuran resolusi camera. Kepengennya sih ngembalikan byte[] sesuai dengan ukuran layar screen (jadi lebih kecil). klo ide ku sih masih sebatas resize gambar yg udah diambil. tapi klo ada yg lebih baik tolong bantuannya... :D
DahsyaT bnget c yanG namanya puput iNi..
mauU dounk bsa j2me ..
huhu
aku IMK dsuruh buat mobile aplikasi
menurut puput yaNg kira" nya sering dpake apa yah?.
kLo game gtU gmana?.
@omega
bukan master, gw baru belajar kok
yup dulu gw juga gitu, dapet gede trus di resize aja, gak pake macem2 :D
@ogawa
gw baruu blajar kok,
kalo menurut gw, bikin aja education game di HP, biar anak kecil kalo maen HP bisa dapet manfaatnya..
halo,mas puput..
sy mau tnya neh,sy kan mau TA dngan topik membuat kamus untuk hp dngn pke netbeans..
apa bsa dibantu?
thanks
@anonim
apa yg bisa saya bantu?
sya mau desain menu utama sperti yg mas puput buat..tp tnpa background..
apa codingnya sama?
lalu stau sy,di netbeans ada bagian source, screen, flow,dan analyzer..lalu gmana bagian flowny?
thanks b4
@anonim
kalo gk pake background, g.drawImage nya bisa di komentarin aja,
jujur saya ud lupa kalo pake netbean, tapi kayaknya bagian flow di biarin aja, soalnya saya lebih suka nulis logic di code aja, untuk flow dari layar ini bisa di mainin di method keyPressed nya aja
Poskan Komentar