Bahasa Pemrograman 3 Rev Ke Dua
Bahasa Pemrograman 3 Rev Ke Dua
GUI, ERROR EXCEPTION, THREAD, I/O (INPUT/OUTPUT), DATABASE & PEMBUATAN LAPORAN
KATA PENGANTAR
Dengan berkembangnya teknologi, bahasa pemrograman Java tampil dengan gaya yang berbeda dengan bahasa pemrograman sebelumnya. Dengan keunggulan yang tidak dimiliki oleh bahasa pemrograman lainnya, yaitu multiplatform. Java dengan motonya Write Once Use Every Where telah dibuktikan dengan banyaknya peralatan dewasa ini yang menggunakan bahasa pemrograman Java. Java juga merupakan bahasa pemrograman bebas atau tanpa biaya, sehingga memudahkan para pengembang untuk mengembangkan aplikasi, maupun dari sisi pengguna aplikasi, dapat mengefesienkan biaya yang harus dikeluarkan. Untuk mempelajari bahasa pemrograman Java, khususnya tampilan layar Client/ erver tidaklah mudah, banyak kendala yang dihadapi, oleh karena itu penulis merasa terdorong untuk membuat buku yang lebih detail beserta !ontoh dan latihan. "uku ini selain membahas tentang pemgrograman #U$ %#rafik User $nterfa!e&, pembahasan lainnya adalah penggunaan dan penanganan kesalahan program % Error Exception&, penggunaan program dengan proses parallel %thread&, penanganan file input dan output, bagaimana !ara menyimpan data pada database, membuat laporan menggunakan J'ree(eport dan )entaho, dan menyinggung sedikit mengenai penggunaan editor bahasa pemrograman Java, yaitu *et"eans dan J"uilder. )embuatan buku ini dibuat dan ditujukan kepada pengembang program, mahasiswa informatika, ekolah +enengah ,ejuruan % +,& informatika, dan buat masyarakat luas yang tertarik mengeneai informatika khususnya bidang pembuatan aplikasi program dengan menggunakan bahasa pemrograman Java. Dengan tujuan dapat diterapkan dan dimanfaatkan se!ara luas di masyarakat. )enulis telah semaksimal mungkin untuk menulis buku "ahasa )emrograman Java ini, sebagai pengabdian penulis terhadap *egara untuk turut serta men!erdaskan masyarakat luas. -alaupun sudah semaksimal mungkin penulis tetap membutuhkan kritis dan saran dari teman.teman yang telah memba!a tulisan ini dengan mengirimkan email ke windu/antara.!o.id atau windu0gata/yahoo.!om. 1khir kata saya u!apkan terima kasih, semoga "angsa dan *egara $ndonesia semakin maju diseluruh bidang dan semakin memperhatikan dibidang pendidikan $ndonesia khususnya bidang $nformatika. Jakarta, Desember 2223 )enulis
DAFTAR ISI
PENDAHULUAN
6eknologi Java dibuat sebagai bahasa pemrograman ke!il pada tahun 1771 oleh un +i!rosystem. )ada saat itu proyek pembuatan bahasa pemrograman Java disebut The Green Project. The Green Project yang merupakan proyek rahasia saat itu beranggotakan 14 %tiga belas& orang dan dipimpin oleh James #osling yang berkantor tersembunyi di and 8ill (oad di +enlo )ark. e!ara teknis terputus dari perusahaan U* dan dikerjakan sekitar 19 %delapan belas& bulan lamanya. +ereka berusaha untuk mengantisipasi dengan meran!ang aplikasi atau perangkat lunak lanjutan pada komputer. 8asilnya sangat berbeda dengan sistem komputer yang telah ada. *ama bahasa pemrograman dikenal dengan nama :ak;. )engenalan bahasa pemrograman baru tersebut dikenalkan pada industri televisi kabel digital, tetapi ide mereka terlalu jauh dan tidak dapat diterapkan pada waktu dekat, sehingga industri televisi belum siap menerima teknologi yang mereka tawarkan. aat teknologi internet sudah dikenal luas, bahasa pemrograman :ak; berubah menjadi bahasa pemrograman Java dan dipublikasi tahun 1773. 1plikasi pertama yang menggunakan teknologi Java adalah *ets!ape *avigator, yang merupakan elan!ar $nternet. aat ini, dalam waktu 12 tahun, penggunaan Java sudah dilakukan oleh 5 %empat& juta pengembang sistem aplikasi komputer se!ara keseluruhan di dunia, dan telah memasuki segmen industri besar serta penggunaannya serta kertekaitannya dengan peralatan, komputer dan jaringan. 6erbukti dengan keunggulan, efesiensi, penggunaan banyak platform, dan keamanan membuat teknologi Java digunakan untuk penanganan 2.3 %dua setengah& miliar peralatan yang terdiri dari lebih <22 %tujuh ratus& juta komputer, lebih dari 1 %satu& miliar peralatan bergerak %data berdasarkan dari :vum&, 1.23 %satu seperempat& miliar kartu pintar, printer, kamera Web, permainan, navigasi kendaraan seperti mobil, aplikasi pembayaran parkir dan banyak lagi. )ada saat ini, kita dapat menemukan 6eknologi Java pada jaringan komputer dan peralatan yang berhubungan dengan $nternet dan komputer super!epat para ahli hingga laptop dan handphone. Dari pengguna di jalan.jalan hingga pemain permainan % a!e& dan kartu kredit, sebagai bukti bahwa teknologi Java ada dimana.mana. ,enapa pengembang aplikasi memilih 6eknologi Java =. ,arena bahasa program Java telah berulang.ulang dikaji ulang, pengembangan, pengujian langsung dan dibuktikan dengan komunitas lebih dari 5 %empat& juta pengembang perangkat lunak dan aplikasi. 1lasan lain adalah bahasa pemrograman Java dapat dikembangkan pada 1 %satu& platform atau jenis sistem operasi dan dapat dijalankan pada platform lainnya, dan tidak tergantung pada aplikasi web, server !lient, penyimpanan data 86+> dan lain. lain. Dengan kombinasi teknologi yang dimiliki oleh Java menjadikan aplikasi yang dapat dan mudah diubah suatu saat serta meringankan sisi pengguna produk aplikasi.
"uku "ahasa )emrograman J1?1.#U$, yang ada dihadapan anda sekarang, menggunakan bahasa pemrograman Java standard J2 D, yang dikembangkan oleh un +i!rosystem %www.sun.!om&. elain itu, buku ini disusun menggunakan konsep praktik langsung % learnin by doing& yang dilengkapi pembahasan !ontoh program dengan menggunakan beberapa objek Java , lengkap dengan pembahasannya. 8arapannya, buku ini bisa mengantarkan pemba!a mampu mengembangkan program #U$ %Gra"i# User $nter"ace& layaknya form dan objek lainnya. ekaligus dapat digunakan dalam form, grafik 2 %dua& dimensi, event handlin , error handlin , file akses, !ultithread, dan database %mys@l& serta penggunaan J"uilder, *etbeans dan Jfree(eport dan )entaho. Dikarenakan buku ini diperuntukkan pada pemba!a yang sudah mengenal dasar. dasar algoritma dan dasar.dasar bahasa pemrograman Java . )embahasannya terdiri dari 15 %empat belas& bab, yaitu A BAB I )engenalan #U$ dan !ara menggunakan Jframe. BAB II )enggunaan grafik 2D pada Jframe. BAB III Bontoh program input mahasiswa menggunakan objek J>abel, J6eCt'ield, JBhe!k"oC, J(adio"utton, JBombo"oC, J"utton, 1!tion >istener dan >ayout %'low>ayout dan "order >ayout&. BAB IV +erubah !ontoh program input pada bab $$$ dengan merubah objek JBhe!k boC dengan J>ist %ulti &elected, dan objek J(adio"utton dengan J>ist &in le &elected. edangkan layout yang digunakan adalah "order >ayout BAB V "ab ini menerangkan bagaimana menggunakan peralatan mouse dan keyboard dengan fasilitas Java objek +ouse+otion>istener, +ouse>istener, ,ey>istener, dan 1!tion>istener. BAB VI +embuat program konversi suhu menggunakan objek J lider BAB VII +embuat program editor berita menggunakan objek J+enu"ar, J+enu, J)opup+enu, J+enu$tem, J6eCt1rea, dan "oC BAB VIII +engenal penggunaan J$nternal'rame BAB IX +engenal penggunaan tampilan group berupa tab dengan objek J6abbed)ane BAB X +engenal model desain tampilan pada standar Java BAB XI "agaimana !ara mengatasi kesalahan program atau yang kita kenal dengan Drror DC!ption. BAB XII
+engenal )enggunaan 6hread BAB XIII +engenal !ara mengakses file dan mengembangkan program pada bab ?$$ menggunakan fasilitas akses file. BAB XIV Bara menggunakan database mys@l dan interfa!e koneksi database JD"B BAB XV +embuat laporan dengan menggunakan j'ree(eport BAB XVI Jawaban oal >atihan BAB XVI )enutup
<
BAB I
1tau
//program kedua menggunakan konstruktor import javax.swing.*; class frame%1 extends JFrame{ frame%1(!{ &&constru'tor s#ow(!; $ $ class frame%%{ public static void main(String args[ !{ new frame%1(!; $ $
1pabila kedua program tersebut dikompilasi dan dijalankan maka akan terdapat tampilan seperti dibawah ini A
#ambar 1.1. J'rame Untuk membuat frame dengan tulisan Universitas "udi >uhur;, pada posisi C G 12 dan H G 122, lebar G 422, tinggi G 222, (esi)able "alse, dan akan terhapus di alokasi memori setelah aplikasi di tutup seperti pada gambar 1.2 sebagai berikut A
setLocation (10,100);
setResiza !e("a!se);
this.setSize(300,200)
!rame"
frame61#$" super(()niversitas *udi +u#ur(!; set,efault-lose.peration(JFrame./0123.43-+.S/!; t#is.set+ocation (156155!; t#is.setSi7e(8556%55!; set9esi7able(false!; s%ow#$; & & class frame6'" pu(lic static void main #)tring args*+$" new frame61#$; & &
12
BAB II
11
//Class frame class grap11 extends !rame" private Container konten,new Container#$; private grap1 dua, "new grap1(!; grap11#$" super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3 $; t%is.set0ocation#189188$; t%is.set)i:e#';89'88$; konten, getContent<ane#$; 'onten.add(dua,!; & s%ow#$;
Bontoh tampilan pada gambar ke $$.1, terdapat 2 %dua& !lass, yaitu . class grap1 extends Canvas . class grap11 extends !rame )ada !lass pertama, !lass yang bernama grap1, merupakan turunan dari objek Banvas yang berasal dari java.awt yang digunakan untuk melakukan design grafik 2D. 1dapun struktur dasar dari !anvas bersifat abstrak dengan bentuk dasar pemrogramannya adalah sebagai berikut A
*pu(lic=private+ class >nameclass? extends Canvas" pu(lic void paint#@rap%ics >objectname>)" A.. & &
)erumpamaan membuat gambar 2D menggunakan objek Banvas adalah seperti menggambar pada sebuah kertas kosong dengan pensil gambar. 8anya saja penggunaan objek Banvas menggunakan posisi piksel pada frame. )osisi 2 pada horiIontal %JG2& dan posisi 2 pada vertikal %HG2&, menunjukan posisi tersebut berada pada posisi ujung paling kiri dan paling atas dari frame. Jika J K 2 maka posisi berada ke arah kanan dari frame, sedangkan jika H K 2 maka posisi berada ke arah bawah dari frame. "anyak objek yang dapat digunakan untuk menggambar 2D pada Banvas, yaitu bulat, kotak, garis dan lain.lain. )ada #ambar 2.1 terdapat beberapa objek, yaitu A . ,otak draw9ect (x6;6widt#6 #eig#t! 12
,otak dengan bundaran di pinggir draw9ound9ect (x6 ;6 widt#6 #eig#t6 arcwidt#6 arc#eig#t!
tring drawstring(HDtulisanFI6x6;!
#aris draw+ine(x6;6widt#6#eig#t!
"undar draw.val(x6;6widt#6#eig#t!
)ewarnaan set-olor(DcolorF!
,etika hendak menggunakan Blass pertama pada !lass kedua %frame& perlu menggunakan perintah A private grap1 dua, " new grap1(!; ,emudian !lass pertama tersebut ditampilkan pada J'rame dengan menggunakan perintah A 'onten.add(dua,!;
14
La i$an % "uatlah program 2 %dua& dimensi seperti pada gambar dibawah ini
15
BAB III
JLa&e'( JTe) Fie'*( J+$e!kB,)( JRa*i,B- ,n( J+,.&,B,)( JB- ,n ( A! i,n Lis ener Dan La/,(F',0La/,- *an B,r*er La/,- "
:bjek #U$ yang dapat digunakan pada bahasa pemrograman Java standard, khususnya javaC.swing.F, sangat banyak dan fleksibel. Bontoh pada #ambar 4.1, menunjukan form input.an mahasiswa yang menggunakan beberapa objek javaC.swing.F, yaitu A J>abel, J6eCt'ield, JBhe!k"oC, J(adio"utton, JBombo"oC dan J"utton. Ditambah dengan penggunaan 1!tion >istener dari java.awt.event.F dan model.model tampilan %'low>ayout dan #rid>ayout &
0a(el Text!ield
#ambar 4.1. $nput Data +ahasiswa ebelum membuat program, sebaiknya kita mengenal masing.masing objek satu persatu, yaitu A JLa&e' "erfungsi untuk menampilkan tulisan atau gambar ikon pada frame
Constructor
J+abel#$
J+abel#5con image9 int %ori:ontalBlignment$ +embuat 0a(el dengan #ambar dan model hori)ontal C37T3C, C5@DT, 03B157@ atau TCB5057@$ J+abel#)tring text$ +embuat 0a(el
13
+embuat 0a(el dengan isi teCt di dalamnya, gambar dan hori)ontal ali n!ent %03!T, C37T3C, C5@DT, 03B157@ atau TCB5057@$.
J+abel#)tring text9 int %ori:ontalBlignment$ +embuat 0a(el dengan isi teCt di dalamnya dan C37T3C, C5@DT, 03B157@ atau TCB5057@$.
+emberikan nilai string pada 0a(el Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLlabel.html JTe) Fie'* "erfungsi sebagai media edit sin le teks
Constructor
J2extField#$
+embuat
Text!ield.
J2extField#1ocument doc9 )tring text9 int columns$ +embuat Text!ield yang menggunakan model teCt, isi
dari
Text!ield
dan kolom.
J2extField#int columns$ +embuat Text!ield J2extField#)tring text$ +embuat Text!ield
dengan model kolom. dengan isi teks di dalamnya. dalamnya dan kolom.
1E
+emberikan nilai string pada Text!ield Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLteCtfield.html J+$e!kB,) Digunakan untuk pilihan yang dapat lebih dari satu pilihan
Constructor
J-#ec'*ox#$
+embuat C%eck/ox dalam posisi tidak ter!entangLterpilih tanpa teCt dan ikon.
JCheckBox(Action a)
Creates a chec# box *here properties are ta#en "ro! the +ction supplied,
J-#ec'*ox#5con icon$ +embuat C%eck/ox
gambar ikon.
J-#ec'*ox#5con icon9 (oolean selected$ +embuat C%eck/ox dengan tampilan gambar J-#ec'*ox#)tring text$ +embuat C%eck/ox
ikon dan posisi ter!entangLterpilih tergantung dengan parameter "oolean yang diberikan. dengan posisi tidak ter!entangLterpilih dengan teks.
J-#ec'*ox#)tring text9 (oolean selected$ +embuat C%eck/ox dengan isian berupa teks J-#ec'*ox#)tring text9 5con icon$ +embuat C%eck/ox dengan posisi
dan posisi ter!entangLterpilih disesuaikan dengan parameter "oolean yang diberikan. tidak ter!entang dengan teks dan tampilan
gambar ikon.
J-#ec'*ox#)tring text9 5con icon9 (oolean selected$ +embuat C%eck/ox dengan teks dengan tampilan gambar
ikon dan posisi ter!entangLterpilih disesuaikan dengan parameter "oolean yang diberikan.
1<
Bontoh )enggunaan A
+endapatkan nilai dari C%eck/ox. Jika ter!entangLterpilih maka nilainya adalah true, apabila tidak ter!entang nilainya adalah false.
void setSelected#$
+,ns r-! ,r
J9adio*utton#$
+embuat Cadio/utton dengan posisi tidak ter!entangLterpilih dan tanpa isian teks.
J9adio*utton#5con icon$ +embuat Cadio/utton
J9adio*utton#)tring text9 (oolean selected$ +embuat Cadio/utton dengan teks dan posisi ter!entangLterpilih
ter!entangLterpilih.
J9adio*utton#)tring text9 5con icon9 (oolean selected$ +embuat Cadio/utton dengan teks, gambar ikon dan posisi ter!entangLterpilih
19
+endapatkan nilai dari Cadio/utton. Jika ter!entangLterpilih maka nilainya adalah true, apabila tidak ter!entang nilainya adalah false.
void setSelected#$
+emberikan nilai true atau false pada objek Cadio/utton. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLbutton.html aat penggunaan Cadio/utton harus menggunakan /utton@roup untuk menggabungkan Cadio/utton. B- ,nGr,1 "erfungsi sebagai penggabungan komponen pada Java
Constructor
*utton:roup#$
+embuat /utton@roup
+enghapus button dari the group. J+,.&,B,) "erfungsi untuk memilih satu dari beberapa pilihan dengan tampilan list dan dapat diedit sesuai dengan kebutuhan
Constructor
J-ombo*ox#$
+embuat
Com(o/ox.
J-ombo*ox#Com(o/oxModel aModel$
17
22
Com(o/ox Com(o/ox.
Com(o/ox.
+erubah posisi item berdasarkan obje!t. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsL!omboboC.html JB- ,n +engimplementasikan penggunaan push button;
21
Constructor
J*utton#$
+embuat tombol dengan tampilan teks dan gambar ikon. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLbutton.html Dalam tampilan layar pada #ambar 4.1, apabila tombol 6ampilkan; ditekan maka akan tampil isi data dari form. )ada pemrograman Java, fungsi tersebut dapat menggunakan !ethod addBction0istener dan action<erformed.
Method
void actionJerformed#Bction3vent e$
+endeteksi 1!tion yang diberikan. (an!angan tampilan dibuat dengan menggunakan layout 'low>ayout dan #rid>ayout. Dalam layout 'low>ayout terdapat 4 %tiga& jenis layout, yaitu 'low>ayout.>D'6 untuk posisi kiri, 'low>ayout.BD*6D( untuk posisi tengah dan 'low>ayout.($#86 untuk posisi kanan >D'6 BD*6D( ($#86
edangkan #rid>ayout disesuaikan dengan parameter yang diberikan. ebagai !ontoh, #rid>ayout%E,2&, berarti baris dari grid adalah E %enam& dan kolomnya sebanyak 2 dua&. Untuk lebih jelasnya pada #ambar 4.1 adalah sebagai berikut A !ontainer
22
panel1 gridlayout %E,2& lbl*im lbl*ama lbl ertifikat lblJurusan lbl,ampus !md ave
tCt*im tCt*ama panel2 gridlayout %4,1& !h D !h +) panel4 gridlayout %5,1& rd6$ rd+$ rd1, !mb,ampus !mdDCit
!h +1 rd6,
6erdapat satu Bontainer dengan layout 'low>ayout.BD*6D(, yang berarti Bontainer selalu berada di tengah 'rame. Dengan 4 %tiga& panel, yaitu A . panel1, dengan layout #rid>ayout%E,2& untuk penempatan lbl*im, tCt*im, lbl*ama, tCt*ama, lbl ertifikat, panel2, lblJurusan, panel4, lbl,ampus, !mb,ampus, !md ave, dan !mdDCit . panel2, dengan layout #rid>ayout%1,4& untuk penempatan !h D, !h +), dan !h +1 . panel4, dengan layout #rid>ayout%1,5&, untuk penempatan rd6$, rd+$, rd1,, dan rd6,D etelah mengenal objek yang akan digunakan, maka kita dapat menganalisa program untuk tampilan pada layer seperti pada #ambar 4.1
//program ke lima import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; class frame'F extends !rame" //deklarasi private Container konten , new Container#$; private <anel panel1 , new <anel#$; private J+abel lbl4im " new J+abel(!; private J2extField txt4im " new J2extField(15!; private J+abel lbl4ama " new J+abel(!; private J2extField txt4ama " new J2extField(%5!; private 0a(el l(l)ertifikat , new 0a(el#$; private <anel panel' , new <anel#$; private J-#ec'*ox c#S, " new J-#ec'*ox((S,(!; private J-#ec'*ox c#SEJ " new J-#ec'*ox((SEJ(!; private J-#ec'*ox c#SEA " new J-#ec'*ox((SEA(!; private private <anel panelF , new <anel#$; 0a(el l(l urusan , new 0a(el#$;
24
&&,iguna'an untu' mengelompo''an radio button private *utton:roup grpJurusan " new *utton:roup(!; private private private private J9adio*utton J9adio*utton J9adio*utton J9adio*utton rd21 rdE1 rdAK rd2K " " " " new new new new J9adio*utton((21(!; J9adio*utton((E1(!; J9adio*utton((AK(!; J9adio*utton((2K(!;
private J+abel lblKampus " new J+abel(!; String sKampus[ " { (-empa'a Juti#(6 (-iledu'(6(9ox;(6(Salemba( $; private J-ombo*ox cmbKampus " new J-ombo*ox(sKampus!; private J*utton cmdSave " new J*utton((2ampil'an(!; private J*utton cmd/nd " new J*utton((Selesai(!; frame'F#$" super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3 $; t%is.set0ocation#189188$; t%is.set)i:e#;889'88$; konten,getContent<ane#$; konten.set0aGout#new !low0aGout# !low0aGout.C37T3C$ $; lbl4im.set2ext((41E(!; lbl4ama.set2ext((4AEA(!; lblSertifi'at.set2ext((Sertifi'at(!; lblJurusan.set2ext((Jurusan(!; lblKampus.set2ext((Kampus(!; panel1.set0aGout#new @rid0aGout#69'$$; panel1.add(lbl4im!; panel1.add(txt4im!; panel1.add(lbl4ama!; panel1.add(txt4ama!; panel1.add(lblSertifi'at!; panel'.set0aGout#new @rid0aGout#19F$$; panel%.add(c#S,!; panel%.add(c#SEJ!; panel%.add(c#SEA!; panel1.add(panel%!; grpJurusan.add(rd21!; grpJurusan.add(rdE1!; grpJurusan.add(rdAK!; grpJurusan.add(rd2K!; panelF.set0aGout#new @rid0aGout#19H$$;
25
panel8.add(rd21!; panel8.add(rdE1!; panel8.add(rdAK!; panel8.add(rd2K!; panel1.add(lblJurusan!; panel1.add(panel8!; &&posisi index terpili# " 1 -iledug cmbKampus.setSelected1ndex(1!; &&tampil data dalam combo #an;a 8 baris cmbKampus.setEaximum9ow-ount(8!; panel1.add(lblKampus!; panel1.add(cmbKampus!; itemDandler itemDandler , new itemDandler#$; panel1.add(cmdSave!; cmd)ave.addBction0istener#itemDandler$; panel1.add#cmd3nd$; cmd3nd.addBction0istener#itemDandler$; konten.add#panel1$; s%ow#$; & private class itemLandler implements Action+istener{ public void actionJerformed(Action/vent e!{ &&mendapat'an nama obje' action .bject obj"e.getSource(!; if(obj""cmdSave!{ String s2ampil; s2ampil " (41E M ( N txt4im.get2ext(!; s2ampilN" (On4ama M ( N txt4ama.get2ext(!; s2ampilN" (OnSertifi'at(; if (c#S,.isSelected(!! s2ampilN" (6 S,(; if (c#SEJ.isSelected(!! s2ampilN" (6 SEJ(; if (c#SEA.isSelected(!! s2ampilN" (6 SEA(; s2ampilN" (OnJurusan(; if (rd21.isSelected(!! s2ampilN" (6 21(; else if(rdE1.isSelected(!! s2ampilN"(6E1(; else if(rdAK.isSelected(!! s2ampilN"(6AK(; else if(rd2K.isSelected(!! s2ampilN"(62K(; else s2ampilN"(6 4ga' Jelas(;
23
&
La i$an # )ada program kelima tambahkan beberapa fasilitas yang akan tampil pada saat program dijalankan, antara lain A . $!on pada frame . *im A 7311322145 . *ama A -indu #ata . D A Bhe!ked . +) A Bhe!ked . +1 A Bhe!ked . Jurusan 6$ A Bhe!ked . $!on )ada 6ombol ave . $!on )ada 6ombol Dnd . &hort -ey ); )ada 6ombol ave . &hort -ey ; )ada 6ombol Dnd
2<
BAB IV
JLis (Single Selected *an Multi Selected" DAN LA3OUT (B,r*er La/,- "
#ambar 5.1 adalah merupakan model form yang mirip seperti pada #ambar 4.1 dimana JBhe!k"oC diganti dengan J>ist model !ultiselection dan J(adio"utton diganti dengan J>ist model sin leselection.
#ambar 5.1. 'orm $nput +ahasiswa %J>$ 6& JLIST +embuat tampilan data list
Constructor
J+ist#$
+embuat
0ist
J+ist#0istModel dataModel$ +embuat 0ist yang menampilkan J+ist#2(ject*+ list1ata$ +embuat 0ist yang menampilkan J+ist#Eector list1ata$ +embuat 0ist yang
29
+endapatkan nilai $ndeC jika tidak ada yang terpilih maka Jlist akan memberikan nilai .1.
2(ject getSelectedPalue#$
+endapatkan nilai terpilih jika tidak ada yang terpilih maka list akan memberikan nilai null.
2(ject*+ getSelectedPalues#$
+endapatkan nilai true apabila indeC terpilih dan akan mengembalikan nilai false jika tidak terpilih.
(oolean isSelection/mpt;#$
>o(ject?.set)electionMode#0ist)electionModel.M.0T5<036 57T3CEB06)303CT527$
Bontoh )enggunaan A $ 14556a7a8s-n8!,.5*,!s5&,,ks5 - ,ria'5-is0in25!,.1,nen s5'is 8$ .' dalam ran!angan tampilan pada #ambar 5.1, kita menggunakan layout 'low>ayout, #ridlayout dan "order>ayout. )erlu diingat bahwa layout 'low>ayout dan #rid>ayout telah diterangkan sebelumnya, khususnya dalam !ontoh pada #ambar 4.1. edangkan ilustrasi dari penggunaan layout "order>ayout dapat dilihat dalam bentuk berikut A
27
9EST
EAST
>ayout "order>ayout menggunakan arah mata angin sebagai patokan, misalkan A . *orth, berarti objek berada pada posisi atas. . -est, berarti objek berada pada posisi kiri. . Benter, berarti objek berada pada tengah. . Dast, berarti objek berada pada posisi kanan. . outh, berarti objek berada pada posisi bawah. Untuk lebih jelasnya ran!angan tampilan pada #ambar 4.1 adalah sebagai berikut A panel5 panel1 %2,2& "order>ayout.*:(68 lbl*im lbl*ama panel2 %2,2& "order>ayout.BD*6D( lbl ertifikat lst ertifikat tCt*im tCt*ama
lblJurusan
lstJurusan
!mb,ampus !mdDCit
6erdapat 1%satu& Bontainer dengan model 'low>ayout.BD*6D( dengan jumlah panel sebanyak 5 %empat& panel A . panel1, dengan model layout #rid>ayout%2,2& untuk penempatan lbl*im, tCt*im, lbl*ama dan tCt*ama . panel2, dengan model layout #rid>ayout%2,2& untuk penempatan lbl ertifikat, lst ertifikat, lblJurusan, dan lstJurusan . panel4, dengan model layout #rid>ayout%2,2& untuk penempatan lbl,ampus, !mb,ampus, btn ave, dan btnDCit . panel5, dengan model "order>ayout. Dimana pada posisi *:(68 untuk penempatan panel1, posisi BD*6D( untuk penempatan panel2, dan posisi :U68 untuk penempatan panel4
42
private <anel panel' , new <anel#$; private 0a(el l(l)ertifikat , new 0a(el#$; String sSertifi'at[ " {(S,(6 (SEJ(6 (SEA($; private J+ist lstSertifi'at; private 0a(el l(l urusan , new 0a(el#$; String sJurusan[ " {(21(6 (E1(6 (AK(6 (2K($; private J+ist lstJurusan; private <anel panelF , new <anel#$; private 0a(el l(lIampus , new 0a(el#$; )tring sIampus*+ , "-Cempaka <uti%-9-Cileduk-9-CoxG-9-)alem(a-&; private Com(o/ox cm(Iampus , new Com(o/ox#sIampus$; private private /utton cmd)ave , new /utton#-Tampilkan-$; /utton cmd3nd , new /utton#-)elesai-$; <anel#$;
super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3 $; t%is.set0ocation#189188$; t%is.set)i:e#;889H;8$; konten,getContent<ane#$; konten.set0aGout# new !low0aGout# !low0aGout.C37T3C $ $; l(l7im.setText#-75M-$;
41
$; $;
l(l7ama.setText#-7BMB-$; l(l)ertifikat.setText# -)ertifikat #Multiple )election$l(l urusan.setText# - urusan #)ingle )election$l(lIampus.setText#-Iampus-$; panel1.set0aGout#new @rid0aGout#'9'$$; panel1.add#l(l7im$; panel1.add#txt7im$; panel1.add#l(l7ama$; panel1.add#txt7ama$; panel'.set0aGout#new @rid0aGout#'9'$$;
&&Eulti selection lstSertifi'at " new J+ist(sSertifi'at!; lstSertifi'at.setSelectionEode( +istSelectionEodel.E)+21J+/3142/9PA+3S/+/-21.4 !; panel'.add#l(l)ertifikat9 /order0aGout.72CTD$; //untuk mengaktifkan scroll //menu gunakan )croll<ane panel'.add#new )croll<ane#lst)ertifikat$$; &&Single Selection lstJurusan " new J+ist(sJurusan!; lstJurusan.setSelectionEode( +istSelectionEodel.S14:+/3S/+/-21.4 !; panel'.add#l(l urusan$; &&Jangan lupa biar 'asi# JScroll Jane &&*iar tampil scrolln;a panel%.add(new JScrollJane(lstJurusan!!; panelF.set0aGout#new @rid0aGout#'9'$$; cm(Iampus.set)elected5ndex#1$; cm(Iampus.setMaximumCowCount#F$; panelF.add#l(lIampus$; panelF.add#cm(Iampus$; itemDandler itemDandler , new itemDandler#$; panelF.add#cmd)ave$; cmd)ave.addBction0istener#itemDandler$; panelF.add#cmd3nd$; cmd3nd.addBction0istener#itemDandler$; panelH.set0aGout#new /order0aGout#$$; panelH.add#panel19 /order0aGout.72CTD$; panelH.add#panel'9 /order0aGout.C37T3C$;
42
panelH.add#panelF9 /order0aGout.)2.TD$; konten.add#panelH9 /order0aGout.3B)T$; s%ow#$; & private class itemDandler implements Bction0istener" pu(lic void action<erformed#Bction3vent e$" 2(ject o(j,e.get)ource#$; if#o(j,,cmd)ave$" )tring sTampil; sTampil , -75M J - K txt7im.getText#$; sTampilK, -Ln7ama J - K txt7ama.getText#$; sTampilK, -Ln)ertifikat -; if (lstSertifi'at.isSelected1ndex(5!! s2ampilN"(6 ( N sSertifi'at[5 ; if (lstSertifi'at.isSelected1ndex(1!! s2ampilN"(6 ( N sSertifi'at[1 ; if (lstSertifi'at.isSelected1ndex(%!! s2ampilN"(6 ( N sSertifi'at[% ; sTampilK, -Ln urusan9 -; sTampilK, lst urusan.get)electedEalue#$; sTampilK,-LnIampus9-; s2ampilN"cmbKampus.get1temAt( cmbKampus.getSelected1ndex(! !; 2ption<ane.s%owMessage1ialog# null9 sTampil 9 -DB)50-9 2ption<ane.57!2CMBT5276M3))B@3
44
La i$an : . "uatlah tampilan 8andphone seperti pada #ambar 5.2 kemudian aktifkan tombol numerik %F,M,2.7& sehingga dapat tampil pada 6eCt'ield dibawah ini
#ambar 5.2. 8and)hone . "uatlah program konversi suhu !el!ius, ,elvin dan 'arenheit dengan tampilan seperti pada #ambar 5.4.
45
BAB V
M,-seM, i,nLis ener( M,-seLis ener( Ke/Lis ener( *an A! i,nLis ener8
alah satu keunggulan #U$ sehingga sering digunakan pada pemrograman, yaitu karena dapat berinteraksi dengan media +ouse dan tentu saja ,eyboard. 'asilitas listener juga ada pada objek java.awt.event.F. )ada pemrograman Java, untuk mengenali pergerakan mouse dikenal sebutan M,-seM, i,nLis ener, sedangkan mengenali penggunaan tombol pada mouse disebut dengan M,-seLis ener, sedangkan penggunaan tombol pada keyboard disebut dengan Ke/Lis ener. M,-seM, i,nLis ener +endeteksi pergerakan mouse
Method
void mouse,ragged#Mouse3vent e$
+ouse digerakkan tanpa ada tombol yang ditekan. M,-seLis ener +endeteksi tombol mouse yang digunakan
Method
void mouse-lic'ed#Mouse3vent e$
6ombol mouse dilepaskan Ke/Lis ener +endeteksi tombol keyboard yang digunakan
43
Method
void 'e;Jressed#IeG3vent e$
Method
void actionJerformed#Bction3vent e$ +engetahui Bction yang dilakukan.
$;
4E
$; la(el1.set!oreground#Color.M3002N$; la(el1.setText#-Mouse 3vent-$; la(el'.set!ont# new !ont#-Ta%oma-9!ont./2019'8$ $; la(el'.set!oreground#Color./0.3$; la(el'.setText#-Mouse Move-$; konten.add#la(el1$; konten.add#la(el'$; konten.add#txtIeG$; konten.add#la(elF$; la(el'.set!oreground#Color.C31$; //conto% event %andling konten.addMouseMotion0istener#t%is$; konten.addMouse0istener#t%is$; txtIeG.addIeG0istener#t%is$; s%ow#$; & &&Eouse Eotion +istener public void mouse,ragged(Eouse/vent e!{ label%.set2ext( (,ragged at [( N e.get0(!N(6(Ne.get?(!N( ( !; $ public void mouseEoved(Eouse/vent e!{ label%.set2ext( (Eoved at [( N e.get0(!N(6(Ne.get?(!N( ( !; $ &&Eouse +istener public void mouse9eleased(Eouse/vent e!{ label1.set2ext((Eouse 9eleased(!; $ public void mouseJressed(Eouse/vent e!{ label1.set2ext((Eouse Jressed(!; $ public void mouse/xited(Eouse/vent e!{ label1.set2ext((Eouse /xited(!; $ public void mouse/ntered(Eouse/vent e!{ label1.set2ext((Eouse /ntered(!; $ public void mouse-lic'ed(Eouse/vent e!{ label1.set2ext((Eouse -lic'ed(!; $
4<
&&Ke; +istener public void 'e;2;ped(Ke;/vent e!{ label8.set2ext(e.getKe;2ext(e.getKe;-ode(!!!; $ public void 'e;Jressed(Ke;/vent e!{ label8.set2ext(e.getKe;2ext(e.getKe;-ode(!!!; $ public void 'e;9eleased(Ke;/vent e!{ label8.set2ext(e.getKe;2ext(e.getKe;-ode(!!!; $ pu(lic static void main#)tring args*+$" new grap''#$; & & //program kedelapan import javax.swing.*; import java.awt.*; import java.awt.event.*; class grap'' extends !rame" private Container konten , new Container#$; private 0a(el la(el1 , new 0a(el#$; private 0a(el la(el' , new 0a(el#$; private Text!ield txtIeG , new Text!ield#'8$; private 0a(el la(elF , new 0a(el#$; grap''#$" super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; t%is.set0ocation#189188$; t%is.set)i:e#';89'88$; konten,getContent<ane#$; konten.set0aGout# new !low0aGout#!low0aGout.C37T3C$ $; la(el1.set!oreground#Color.M3002N$; la(el1.setText#-Mouse 3vent-$; la(el'.set!ont#new !ont#-Ta%oma-9!ont./2019'8$$; la(el'.set!oreground#Color./0.3$; la(el'.setText#-Mouse Move-$; konten.add#la(el1$; konten.add#la(el'$; konten.add#txtIeG$; konten.add#la(elF$; //conto% event %andling la(el'.set!oreground#Color.C31$; 'onten.addEouseEotion+istener( new EouseEotion+istener(!{ public void mouse,ragged(Eouse/vent e!{
49
label%.set2ext( (,ragged at [( N e.get0(!N(6(Ne.get?(!N( ( !; $ public void mouseEoved(Eouse/vent e!{ label%.set2ext( (Eoved at [( N e.get0(!N(6(Ne.get?(!N( ( !;
$ !;
'onten.addEouse+istener( new Eouse+istener(!{ public void mouse9eleased(Eouse/vent e!{ label1.set2ext((Eouse 9eleased(!; $ public void mouseJressed(Eouse/vent e!{ label1.set2ext((Eouse Jressed(!; $ public void mouse/xited(Eouse/vent e!{ label1.set2ext((Eouse /xited(!; $ public void mouse/ntered(Eouse/vent e!{ label1.set2ext((Eouse /ntered(!; $ public void mouse-lic'ed(Eouse/vent e! {label1.set2ext((Eouse -lic'ed(!; $ $ !; txtKe;.addKe;+istener( new Ke;+istener(!{ public void 'e;2;ped(Ke;/vent e!{ label8.set2ext( e.getKe;2ext(e.getKe;-ode(!! !; $ public void 'e;Jressed(Ke;/vent e!{ label8.set2ext( e.getKe;2ext(e.getKe;-ode(!! !; $ public void 'e;9eleased(Ke;/vent e!{ label8.set2ext( e.getKe;2ext(e.getKe;-ode(!! !; $ $ !; s%ow#$; & pu(lic static void main#)tring args*+$"
47
& &
new grap''#$;
,edua program tersebut apabila dijalankan mempunyai hasil yang sama %#ambar 3.1& namun model penulisannya berbeda.
#ambar 3.1. +ouse+otion>istener, +ouse>istener, dan ,ey>istener )ada program ke tujuh penggunaan listener, yaitu MouseMotion0istener9 dan IeG0istener kita akan menggunakan perintah implements, kemudian pada saat penambahan listener !ukup menambahkan kata t%is atau nama objek class seperti pada penggalan program ke enam yang menggunakan listener Bction0istener. edangkan pada program ke delapan listener ditempatkan pada objek yang mempunyai met%od listener.
Mouse0istener, //penggalan program ke enam import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; class frameF1 extends A " A !rame"
A &
52
//menangkap nama o(jek 2(ject o(j,e.get)ource#$; if#o(j,,cmd)ave$" A & else ")Gstem.exit #8$;& & &
51
3llipse'1.1ou(le circle9 oval9 leaf9 stem; Brea circ9 ov9 leaf19 leaf'9 st19 st'; int w9%; dou(le ew9e%; pu(lic <ear#$ " set)i:e#new 1imension#H889F88$$; set1efaultClose2peration# !rame.345T6276C02)3$; circle , new 3llipse'1.1ou(le#$;
52
oval , new 3llipse'1.1ou(le#$; leaf , new 3llipse'1.1ou(le#$; stem , new 3llipse'1.1ou(le#$; circ , new Brea#circle$; ov , new Brea#oval$; leaf1 , new Brea#leaf$; leaf' , new Brea#leaf$; st1 , new Brea#stem$; st' , new Brea#stem$; /*mendapatkan posisi awal 1imension d , get)i:e#$; w , d.widt%; % , d.%eig%t; !rame*/
/*@am(ar 1itempatkan di Tenga%*/ ew , w/'; e% , %/'; set/ackground#Color.w%ite$; & pu(lic void paint #@rap%ics g$ " @rap%ics'1 g' , #@rap%ics'1$ g;
/*Menggam(ar daun dengan model intersection *dari ' o(ject elipse */ g'.setColor#Color.green$; leaf.set!rame#ewO169 e%O'P9 1;.89 1;.8$; leaf1 , new Brea#leaf$; leaf.set!rame#ewO1H9 e%OHQ9 F8.89 F8.8$; leaf' , new Brea#leaf$; leaf1.intersect#leaf'$; g'.fill#leaf1$; /* *Menggam(ar 1aun ke ' */ leaf.set!rame#ewK19 e%O'P9 1;.89 1;.8$; leaf1 , new Brea#leaf$; leaf'.intersect#leaf1$; g'.fill#leaf'$; g'.setColor#Color.(lack$; /* *Menggam(ar dengan model su(stract *dari ' o(jek elipse */ stem.set!rame#ew9 e%OH'9 H8.89 H8.8$; st1 , new Brea#stem$; stem.set!rame#ewKF9 e%OHQ9 ;8.89 ;8.8$; st' , new Brea#stem$; st1.su(tract#st'$;
54
g'.fill#st1$; g'.setColor#Color.Gellow$; /*penggam(aran (ua% <ear *dengan sistem pengga(aungan ' o(jek *elipse Gang (er(eda */ circle.set!rame#ewO';9 e%9 ;8.89 ;8.8$; oval.set!rame#ewO1P9 e%O'89 H8.89 Q8.8$; circ , new Brea#circle$; ov , new Brea#oval$; circ.add#ov$; g'.fill#circ$; & pu(lic static void main#)tring s*+$ " <ear p , new <ear#$; p.setEisi(le#true$; & &
,emudian gambar ulang buah pear tersebut sesuai dengan koordinat J dan H dari posisi mouse !li!k
#ambar 3.4 "uah )ear Dengan )enggambaran Ulang esuai )osisi J N H +ouse
55
BAB VI
JS'i*er
)ada bab ini penulis membuat !ontoh program konversi suhu menggunakan komponen Jslider. Dengan rumus A . 'ahrenheit G %Bel!ius F 1.9& O 42 . ,elvin G Bel!ius O 2<4.13P JS'i*er J lider digunakan untuk menandakan nilai dengan model slide. *ilai tersebut berupa nilai minimum, nilai maksimum dan nilai.nilai antara serta bertipe data integer.
Constructor
JSlider#$
+embuat horiIontal slider dengan nilai minimum 2 sampai dengan maCimum 122 dan dengan nilai aktif 32.
JSlider#/oundedCangeModel (rm$
+embuat slider dengan model oreintasi sesuai dengan parameter input %2GhoriIontalQQ1Gverti!al& dengan nilai minimum 2 sampai dengan nilai maCimum 122 dan nilai aktif 32.
JSlider#int min9 int max$
+embuat horiIontal slider menggunakan nilai minimum dan maCimum yang disesuaikan dengan parameter input.
JSlider#int min9 int max9 int value$
+embuat horiIontal slider dengan menggunakan nilai minmum, maCimum, dan nilai aktif sesuai dengan parameter input.
JSlider#int orientation9 int min9 int max9 int value$
+embuat slider dengan model orientasi, minimum, maCimum, dan nilai aktif sesuai dengan parameter input.
53
5nt get.rientation#$
+endapatkan model model oreintasi slider, apakah berbentuk verti!al atau horiIontal.
int getPalue#$
5E
#ambar 5.1 merupakan bentuk program lain dari program konversi suhu yang terdapat pada latihan 2. #ambar E.1 menggunakan slider sebagai petunjuk nilai aktif. panel2 grid>ayout%2,1& panel1%1,2& "order>ayout.*:(68 lblBel!ius lblBel!iusBapt sldBel!ius, "order>ayout. :U68 panel4 grid>ayout%2,2& lbl'ahrenheit lbl'ahrenheitBapt panel5 "order>ayout.-est s l d ' a h r e n h e i t "order>ayout.Dast
lblBalvin lbl,elvinBapt
s l d , e l v i n
6erdapat E %enam& panel, yaitu A . pane11, dengan model 'low>ayout.BD*6D(, untuk penempatan lblBel!ius dan lblBel!iusBapt . panel2, dengan model "order>ayout, dimana "order>ayout.*:(68 untuk penempatan panel1 dan "order>ayout. :U68 untuk penempatan sldBel!ius . panel4, dengan model #rid>ayout%2,2&, untuk penempatan lbl'ahrenheit, lbl,elvin, lbl'ahreinheitBapt, dan lbl,elvinBapt . panel5, dengan model layout "order>ayout, dimana "order>ayout.-D 6 untuk penempatan sld'ahrenheit dan "order>ayout.D1 6 untuk penempatan sld,elvin . panel3, dengan model layout "order>ayout, dimana "order>ayout.*:(68 untuk penempatan panel4 dan "order>ayout. :U68 untuk penempatan panel5
5<
panelE, dengan model layout "order>ayout, dimana "order>ayout.*:(68 untuk penempatan panel2 dan "order>ayout. :U68 untuk penempatan panel3
//program ke sem(ilan import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; class frame1 extends " !rame
//penggunaan slider // )lider # // posisi>8O%orisontal=1Overtical?9min9max98 // $ private Container konten , new Container#$; private <anel panel1 , new <anel#$; private <anel panel' , new <anel#$; private 0a(el l(lCelcius , new 0a(el#$; private 0a(el l(lCelciusCapt , new 0a(el#$; private JSlider sld-elcius " new JSlider(!; private private private private private <anel 0a(el 0a(el 0a(el 0a(el panelF , new <anel#$; l(l!a%ren%eit , new 0a(el#$; l(l!a%ren%eitCapt , new 0a(el#$; l(lIelvin , new 0a(el#$; l(lIelvinCapt , new 0a(el#$;
private <anel panelH , new <anel#$; private JSlider sldFa#ren#eit " new JSlider(1656%5565!; private JSlider sldKelvin " new JSlider(1656%5565!; private private <anel panel; , new <anel panel6 , new <anel#$; <anel#$;
frame1#$ " super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; set)i:e#'889F';$; set0ocation#189188$; konten , getContent<ane#$; l(lCelcius.setText#-Celcius-$; l(lCelciusCapt.setText#-8 1erajat-$; panel1.set0aGout# new !low0aGout# !low0aGout.C37T3C $ $;
59
panel1.add#l(lCelcius$; panel1.add#l(lCelciusCapt$; panel'.set0aGout#new /order0aGout#$$; panel'.add#panel19 /order0aGout.72CTD$; sldCelcius.setEalue#8$; panel%.add(sld-elcius6 *order+a;out.S.)2L!; l(l!a%ren%eit.setText#-!a%ren%eit -$; l(l!a%ren%eitCapt.setText#-8 1erajat-$; l(lIelvin.setText#-Ielvin -$; l(lIelvinCapt.setText#-'QF.1; 1erajat-$; panelF.set0aGout#new @rid0aGout #'9 '$$; panelF.add#l(l!a%ren%eit$; panelF.add#l(lIelvin$; panelF.add#l(l!a%ren%eitCapt$; panelF.add#l(lIelvinCapt$; panelH.set0aGout#new /order0aGout#$$; panelH.add#sld!a%ren%eit9 /order0aGout.N3)T$; &&JSlider Lan;a Eenerima 4ilai 1nteger sldKelvin.setEaximum(1555!; sldKelvin.setEinimum((int! %=8.1<!; sldKelvin.setPalue((int! %=8.1<!; panelH.add#sldIelvin9 /order0aGout.3B)T$; panel;.set0aGout#new /order0aGout#$$; panel;.add#panelF9 /order0aGout.72CTD$; panel;.add#panelH9 /order0aGout.)2.TD$; panel6.set0aGout#new /order0aGout#$$; panel6.add#panel'9 /order0aGout.72CTD$; panel6.add#panel;9 /order0aGout.)2.TD$; sld-elcius.add-#ange+istener ( &&ji'a nilai slider *eruba# new -#ange+istener(! {public void state-#anged(-#ange/vent e! { lbl-elcius-apt.set2ext( sld-elcius.getPalue(! N ( ,erajat( !; $ $ !; sld-elcius.addEouse+istener ( &&ji'a mouse selesai mela'u'an pergera'an new java.awt.event.EouseAdapter(! { public void mouse9eleased(Eouse/vent e! {
57
double dFa#ren#eit6dKelvin; dFa#ren#eit " ( sld-elcius.getPalue(! Q 1.C ! N 8%; dKelvin " sld-elcius.getPalue(! N %=8.1<; sldFa#ren#eit.setPalue((int! dFa#ren#eit!; lblFa#ren#eit-apt.set2ext( dFa#ren#eit N ( ,erajat( !; $ $ !; sldFa#ren#eit.add-#ange+istener ( new -#ange+istener(! {public void state-#anged(-#ange/vent e! { lblFa#ren#eit-apt.set2ext( sldFa#ren#eit.getPalue(! N ( ,erajat( !; $ $ !; sldFa#ren#eit.addEouse+istener (new java.awt.event.EouseAdapter(! { public void mouse9eleased(Eouse/vent e! { double d-elcius6dKelvin; d-elcius"( sldFa#ren#eit.getPalue(!R8% !Q 5.<<<<; dKelvin " d-elcius N %=8.1<; sld-elcius.setPalue((int! d-elcius!; lbl-elcius-apt.set2ext( d-elcius N ( ,erajat( !; sldKelvin.setPalue((int! dKelvin!; lblKelvin-apt.set2ext(dKelvin N ( ,erajat(!; $ $ !; sldKelvin.add-#ange+istener ( new -#ange+istener(! {public void state-#anged(-#ange/vent e! { lblKelvin-apt.set2ext( sldKelvin.getPalue(! N ( ,erajat( !; lblKelvin-apt.set2ext(dKelvin N ( ,erajat(!; sldKelvin.setPalue((int! dKelvin!;
32
$ !;
sldKelvin.addEouse+istener (new java.awt.event.EouseAdapter(! { public void mouse9eleased(Eouse/vent e! { double d-elcius6dFa#ren#eit; d-elcius " sldKelvin.getPalue(!R%=8.1<; dFa#ren#eit " (d-elcius Q 1.C! N 8%; sld-elcius.setPalue((int! d-elcius!; lbl-elcius-apt.set2ext( d-elcius N ( ,erajat( !; sldFa#ren#eit.setPalue((int! dFa#ren#eit!; lblFa#ren#eit-apt.set2ext( dFa#ren#eit N ( ,erajat( !; $ $ !; konten.add#panel6$; & & pu(lic class praktek;1 " pu(lic static void main#)tring args*+$ " new frame1#$; & & s%ow#$;
31
32
BAB VII
Constructor
JEenu*ar#$
34
Untuk menambahkan item pada J+enu"ar kita harus menggunakan J+enu, dimana J+enu juga dapat ditambahkan Jmenu$tem dan juga Jseparators.
Constructor
JEenu#$
+embuat menu item dengan penambahan Bction objek dan menambahkannya pada akhir menu.
Component add#Component c$
35
+endapatkan nilai true apabila menu tersebut dalam posisi terpilih %highlighted&.
void remove#Component c$
dari menu.
+emberikan waktu delay ets the suggested delay before the menuSs <opupMenu is popped up or down.
void setEenu+ocation#int x9 int G$
+emberikan status true %tampil& atau false %tidak& pada menu popup. JP,1-1Men+engimplementasikan menu dengan model popup, sebuah tampilan ke!il yang tampil dengan beberapa pilihan. <opupMenu digunakan pada menu yang tampil pada saat pengguna memilih komponen pada bar menu. Dan juga digunakan pada saat mouse ditekan ;klik kanan;. )opup menu dapat tampil diposisi manapun yang diinginkan.
Constructor
33
JJopupEenu#$
+embuat <opupMenu.
JJopupEenu#)tring la(el$ +embuat <opupMenu dengan
title.
tertentu.
3E
void setPisible#(oolean ($
+enampilkan popup menu berdasarkan koordinat J dan H. JMen-I e. +emberikan komponen pada Jmenu dan J)opup+enu
Constructor
JEenu1tem#$
dengan Bction. dengan gambar ikon. dengan teks. gambar ikon. keyboard mnemoni!.
JEenu1tem#)tring text9 int mnemonic$ +embuat Menu5tem dengan teks dan short!ut
Dnables or disables the menu item. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLmenu.html JTe) Area J6eCt1rea berfungsi sebagai teks editor dalam bentuk !ultiline, sedangkan dalam penggunaannya, untuk mengaktifkan s!roll pada J6eCt1rea menggunakan bantuan J !roll)ane.
Constructor
J2extArea#$
+embuat 6eCt1rea.
3<
J2extArea#1ocument doc9 )tring text9 int rows9 int columns$ +embuat TextBrea dengan model dokumen, teks, baris dan kolom
J2extArea#)tring text9 int rows9 int columns$ +embuat TextBrea dengan teks didalamnya beserta
Menu Bar
#%enuBar() #%enu(*+i!e,) #%enu&te'(*Bu-a +i!e,) #%enu&te'(*Si'pan +i!e,) #%enu&te'(*.e!uar,) #%enu(*/dit,) #%enu&te'(*(op),) #%enu&te'(*(ut,) #%enu&te'(*$aste,) #'enu(*0entan1,)
JPopupMenu
JTextArea
private #0e2t3rea t2t3rea; t2t3rea 4 ne5 #0e2t3rea(20,16); t2t3rea.setLine7rap(true);
39
#ambar <.1. )rogram Dditor "erita #ambar <.1, merupakan program yang menerapkan sistem menu, popmenu, teCtarea dan boC layout. +enu yang akan tampil pada program tersebut adalah sebagai berikut A . 'ile %J+enu mni'ile& o "uka 'ile %J+enu$tem mni'ile"uka& o impan 'ile %J+enu$tem mni'ile impan& o ,eluar %J+enu$tem mni,eluar& . Ddit %J+enu mniDdit& o Bopy %J+enu$tem mniBopy& o But %J+enu$tem mniBut& o )aste %J+enu$tem mni)aste& . 6entang %J+enu mni6entang& +enu popup akan tampil apabila JteCt1rea di T clic# kanan dengan tampilan A . Bopy %J+enu$tem mniBopy& . But %J+enu$tem mniBut& . )aste %J+enu$tem mni)aste& (an!angan tampilan menggunakan 2 %dua& panel dan boC dengan model ?erti!al"oC. Hang dimaksud dengan ?erti!al "oC adalah setiap komponen objek yang ditambahkan pada boC berada pada posisi bawah %vertikal&.
,omponen 1 ,omponen 2 ,omponen 4
#ambar <.2. ?erti!al"oC Untuk lebih jelasnya adalah sebagai berikut A "oC1
37
panel1 grid>ayout%2,2& lbl,ategori lblDaerah panel2 grid>ayout %4,1& lblJudul tCtJudul lbl$si js!roll)ane1 tCt1rea
!mb,ategori !mbDaerah
. . .
panel1, dengan model layout #rid>ayout%2,2&, untuk penempatan lbl,ategori, !mb,ategori, lblDaerah dan !mbDaerah panel2, dengan model layout #rid>ayout%4,1&, untuk penempatan lblJudul, tCtJudul, dan lbl$si. "oC, dengan komponen pertama adalah panel1 dan komponen kedua adalah panel2
//program ke sepulu% import javax.swing.*; import java.awt.*; import java.awt.event.*; class frame;' extends " !rame
private Container konten , new Container#$; private JEenu*ar bar " new JEenu*ar(!; private JEenu mnFile " new JEenu((File(!; private JEenu1tem mniFile*u'a " new JEenu1tem( (*u'a File( !; private JEenu1tem mniFileSimpan " new JEenu1tem( (Simpan File( !; private JEenu1tem mniFileKeluar " new JEenu1tem( (Keluar( !;
E2
private JEenu mn/dit " new JEenu((/dit(!; private JEenu1tem mni-op; " new JEenu1tem((-op;(!; private JEenu1tem mni-ut " new JEenu1tem((-ut(!; private JEenu1tem mniJaste " new JEenu1tem((Jaste(!; private JEenu mn2entang " new JEenu((2entang(!; private 0a(el l(lIategori , new 0a(el#-Iategori-$; )tring pilIategori*+," -7asional-9-1aera%-9-5nternasional&; private Com(o/ox cm(Iategori , new Com(o/ox# pilIategori $; private 0a(el l(l1aera% , new 0a(el#-1aera%-$; )tring pil1aera%*+," -5ndonesia /agian /arat-9 -5ndonesia /agian Timur&; private Com(o/ox cm(1aera% , new Com(o/ox#pil1aera%$; private private 0a(el l(l udul , new 0a(el#- udul-$; Text!ield txt udul , new Text!ield#$;
private 0a(el l(l5si , new 0a(el#-5si-$; private J2extArea txtArea; private JScrollJane jScrollJane1 " new JScrollJane(!; private <anel panel1 , new <anel#$; private <anel panel' , new <anel#$; private /ox (ox1 , /ox.createEertical/ox#$; private <opupMenu popmenu , new <opupMenu#$;
frame;'#$ " super#-.niversitas /udi 0u%ur-$; set)i:e#;889;88$; set1efaultClose2peration# !rame.345T6276C02)3$; 5temDandler itemDandler , new 5temDandler#$; mniFile*u'a.addAction+istener(itemLandler!; mniFileSimpan.addAction+istener(itemLandler!; mniFileKeluar.addAction+istener(itemLandler!; mni-op;.addAction+istener(itemLandler!; mni-ut.addAction+istener(itemLandler!; mniJaste.addAction+istener(itemLandler!; mnFile.add(mniFile*u'a!; mnFile.add(mniFileSimpan!; mnFile.add(mniFileKeluar!; mn/dit.add(mni-op;!; mn/dit.add(mni-ut!; mn/dit.add(mniJaste!;
E1
bar.add(mnFile!; bar.add(mn/dit!; bar.add(mn2entang!; &&jangan lupa guna'an setJEenu*ar setJEenu*ar(bar!; popmenu.add#mniCopG$; popmenu.add#mniCut$; popmenu.add#mni<aste$; panel1.set0aGout#new @rid0aGout#'9'$$; panel1.add#l(lIategori$; panel1.add#cm(Iategori$; panel1.add#l(l1aera%$; panel1.add#cm(1aera%$; (ox1.add#panel1$; panel'.set0aGout#new @rid0aGout#F91$$; panel'.add#l(l udul$; panel'.add#txt udul$; panel'.add#l(l5si$; (ox1.add#panel'$; txtArea " new J2extArea(%561<!; txtArea.set+ine@rap(true!; txtBrea.addMouse0istener # new Mouse0istener#$ " pu(lic void mouse<ressed#Mouse3vent e$ " & pu(lic void mouse3xited#Mouse3vent e$ " & pu(lic void mouse3ntered#Mouse3vent e$ " & pu(lic void mouseClicked#Mouse3vent e$ " & pu(lic void mouseCeleased#Mouse3vent e$ " &&ji'a -lic' 'anan ma'a tampil'an popup if (e.get*utton(! "" 8! popmenu.s#ow( e.get-omponent(!6 e.get0(!6 e.get?(! !; & & $; jScrollJane1.getPiewport(!.add(txtArea6null!; box1.add(jScrollJane1!; konten , getContent<ane#$; konten.set0aGout#new /order0aGout#$$; konten.add#(ox19 /order0aGout.72CTD$; setEisi(le#true$; //sama dengan s%ow#$ &
E2
private class 5temDandler implements Bction0istener "pu(lic void action<erformed#Bction3vent e$ " 2(ject o(jek , e.get)ource#$; if #o(jek ,, mni!ile/uka$ 2ption<ane.s%owMessage1ialog #frame;'.t%is9-/uka !ile-9-/uka-9 2ption<ane.<0B576M3))B@3$; else if #o(jek ,, mni!ile)impan$ 2ption<ane.s%owMessage1ialog #frame;'.t%is9-)impan-9-)impan !ile-9 2ption<ane.<0B576M3))B@3$; else if #o(jek ,, mniCopG$ 2ption<ane.s%owMessage1ialog #frame;'.t%is9-CopG K txtBrea.get)electedText#$ K - 1i Text Brea 9 -CopG-9 2ption<ane.<0B576M3))B@3$; else if #o(jek ,, mniCut$ 2ption<ane.s%owMessage1ialog #frame;'.t%is9-Cut Teks di Teks Brea-9 -Cut-9 2ption<ane.<0B576M3))B@3$; else if #o(jek ,, mni<aste$ 2ption<ane.s%owMessage1ialog #frame;'.t%is9 -<aste Teks di Text Brea-9-<aste-9 2ption<ane.<0B576M3))B@3$; else if #o(jek ,, mni!ileIeluar$ )Gstem.exit#8$; & & & pu(lic class praktek;'" pu(lic static void main#)tring args*+$" new frame;'#$; & &
E4
#ambar <.3 +enu )opo Up Dengan $!on . "uatlah &horcut di tiap menu 'ile ', "uka 'ile ", impan 'ile , ,eluar ,, Ddit D, Bopy B, But U, )aste )
E5
BAB VIII
JIn erna'Fra.e
)ada pemrograman Java #U$, kita mengenal frame dan internal frame. 'rame yang telah dibahas pada bab sebelumnya merupakan model single frame. 6etapi dapat pula kita berikan frame didalamnya, yaitu internal frame. Bontoh pada #ambar 9.1 merupakan gabungan dari penggunaan J lider dan Jinternal'rame sebai konversi warna dari nilai.nilai yang sedang aktif pada slider. JIn erna'Fra.e "erfungsi sebagai frame yang berada pada internal
Constructor
J1nternalFrame#$ +embuat 5nternal!rame
yang ukurannya tidak dapat berubah, tidak dapat ditutup, tidak dapat menjadi ukuran maksimum dan tanpa title.
J1nternalFrame#)tring title$ +embuat 5nternal!rame yang
ukurannya tidak dapat berubah, tidak dapat ditutup, dan tidak dapat menjadi ukuran maksimum. 6etapi mempunyai titel
J1nternalFrame#)tring title9 (oolean resi:a(le$ +embuat 5nternal!rame yang tidak dapat ditutup,
dan tidak dapat menjadi ukuran maksimum. 6etapi mempunyai titel dan dapat dirubah ukurannya.
J1nternalFrame#)tring title9 (oolean resi:a(le9 (oolean closa(le$ +embuat 5nternal!rame yang tidak dapat menjadi ukuran maksimum dan
tanpa gamba ikon. 6etapi mempunyai title, dapat dirubah ukurannya dan dapat ditutup.
J1nternalFrame#)tring title9 (oolean resi:a(le9 (oolean closa(le9 (oolean maximi:a(le$ +embuat 5nternal!rame dengan title,dapat ditutup, dapat dirubah ukurannya
dan dapat dirubah menjadi ukuran maCimal. 6etapi tidak mempunyai gambar ikon.
J1nternalFrame#)tring title9 (oolean resi:a(le9 (oolean closa(le9 (oolean maximi:a(le9 (oolean iconifia(le$ +embuat 5nternal!rame dengan title,dapat ditutup, dapat dirubah
ukurannya, dapat dirubah menjadi ukuran maCimal dan mempunyai gambar ikon. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLinternalframe.html #ambar 9.1 merupakan !ontoh penggunaan J$nternal'rame dan Jslider. Dengan ran!angan tampilan adalah sebagai berikut A . Bontainer dengan model layout #rid>ayout %1,1& untuk penempatan panel left . left, merupakan panel dengan model layout #rid>ayout%2,1& untuk penempatan Bolors . Bolors, merupakan $nternal'rame untuk penempatan sliders E3
liders, merupakan panel dengan model layout%3,1& untuk penempatan panel r, panel g, panel b, !olor !anvas, dan UkosongK. left grid>ayout%2,1& Bolors %j$nterframe& sliders grid>ayout%3,1& ( # " !olorBanvas
UkosongK
EE
Bontoh )rogram A
//program ke se(elas //diam(il dan edit dari www.sun.com import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; pu(lic class Bpp)ide extends Canvas implements C%ange0istener9 5tem0istener " !rame frame , new !rame# -5nternal !rameO.niversitas /udi 0u%ur$; J1nternalFrame -olors " new J1nternalFrame( (-olors(6 true6 true6 true !; <anel left , new <anel#true$;
Canvas colorCanvas , new Canvas#$; // )liders )lider r , new )lider g , new )lider ( , new )lider#89 ';;$; )lider#89 ';;$; )lider#89 ';;$;
Color rg(; int r5nt9 g5nt9 (5nt; ///Main Constructor /// Bpp)ide#$ " frame.pack#$; frame.set)i:e#Q889 ;88$; frame.setEisi(le#true$; frame.getContent<ane#$.set0aGout# new @rid0aGout#191$ $; frame.set1efaultClose2peration# !rame.345T6276C02)3 $; frame.getContent<ane#$.add#left$; & //0eft <anel private void fill0eft#$" left.set0aGout#new @rid0aGout#'9 1$$; left.add(-olors!; -olors.s#ow(!; &
E<
//Color if private void fillColors#$" <anel sliders , new <anel#true$; sliders.set0aGout#new @rid0aGout#;9 1$$; Colors.getContent<ane#$.add#sliders$; sliders.add#r$; sliders.add#g$; sliders.add#($; sliders.add#colorCanvas$; colorCanvas.set/ackground#Color.(lack$; r.addC%ange0istener#t%is$; g.addC%ange0istener#t%is$; (.addC%ange0istener#t%is$;
&
//)liders C%ange pu(lic void stateC%anged#C%ange3vent e$" if#e.get)ource#$ ,, r$" )lider r) , # )lider$e.get)ource#$; r5nt , #int$r).getEalue#$; & if#e.get)ource#$ ,, g$" )lider r) , # )lider$e.get)ource#$; g5nt , #int$r).getEalue#$; & if#e.get)ource#$ ,, ($" )lider r) , # )lider$e.get)ource#$; (5nt , #int$r).getEalue#$; & rg( , new Color#r5nt9 g5nt9 (5nt$; colorCanvas.set/ackground#rg($; & pu(lic void item)tateC%anged#5tem3vent e$"& pu(lic void action<erformed#Bction3vent e$ "& //Main pu(lic static void main#)tring*+ args$" Bpp)ide as , new Bpp)ide#$; as.fillColors#$; as.fill0eft#$; & &
E9
La i$an > . "uatlah atu 'rame Dengan "eberapa $nternal 'rame eperti #ambar Dibawah $ni
E7
BAB IX
JTa&&e*Pane
Bontoh program pada #ambar 7.1 diambil dari httpALLjava.sun.!om mengenai penggunaan 6ab. JTa&&e*Pane ,omponen yang dapat digunakan oleh pengguna, dengan tampilan berdasarkan group komponen dalam bentuk tab. 6ab tersebut dapat diberikan tampilan teks maupun gambara ikon.
+,ns r-! ,r
J2abbedJane#$
input
input
+enambah tab dengan judul dan gambar $kon beserta komponennya dan teks tip.
int getSelected1ndex#$
<2
+enyisipkan komponen pada indeC tertentu dengan judul teks, gambar $kon, komponen, teks tip.
(oolean is/nabledAt#int index$
+emberikan nilai true apabila tab pada indeC tertentu dalam posisi aktif.
void remove#Component component$ +enghapus komponen Ta((ed<ane. void remove#int index$
+emberikan tek tooltip pada tab indeC tertentu. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLtabbedpane.html
6ab 2
6ab 1
#ambar 7.1 mempunyai ran!angan desain sebagai berikut A tabbed)ane ?Ta&%? ?Ta&%? Bard1 ;"utton1; ;"utton 2; ;"utton4; ?Ta& #?
?Ta& #? ;j6eCt'ield;
. . .
tabbedpane, dengan model Ta((ed<ane yang mempunyai dua tab, yaitu tab 2 untuk penempatan !ard1 dan tab 1 untuk penempatan !ard2 !ard1, merupakan panel untuk penempatan "utton1, "utton2, dan "utton4 !ard2, merupakan panel untuk penempatan 6eCt'ield. //program ke dua(elas /* * ,,,diam(il dari sun.java.documen.(ook.sample ,,,, */ import java.awt.*; import javax.swing.*; pu(lic class Ta(1emo " final static String (JJanel final static String (JJanel *)22.4JA4/+ " wit# J*uttons(; 2/02JA4/+ " wit# J2extField(;
pu(lic void addComponentTo<ane#Container pane$ " J2abbedJane tabbedJane " new J2abbedJane(!;
<2
<anel#$
//(esarnGa panel disesuakan dengan (esar frame pu(lic 1imension get<referred)i:e#$ " 1imension si:e ,super.get<referred)i:e#$; si:e.widt% K, 188; return si:e; & &; card1.add#new /utton#-/utton 1-$$; card1.add#new /utton#-/utton '-$$; card1.add#new /utton#-/utton F-$$; <anel card' , new <anel#$; card'.add#new Text!ield#-Text!ield-9 '8$$; tabbedJane.add2ab(*)22.4JA4/+6 card1!; tabbedJane.add2ab(2/02JA4/+6 card%!; pane.add#ta((ed<ane9 /order0aGout.C37T3C$; & private static void createBnd)%ow@.5#$ " //look and feel !rame.set1efault0ookBnd!eel1ecorated#true$; !rame frame , new !rame# -Ta(1emo O .niversitas /udi 0u%ur$; frame.set1efaultClose2peration# !rame.345T6276C02)3 $; Ta(1emo demo , new Ta(1emo#$; demo.addComponentTo<ane#frame.getContent<ane#$$; frame.pack#$; frame.setEisi(le#true$; & pu(lic static void main#)tring*+ args$ " createBnd)%ow@.5#$; & &
<4
#ambar 7.2 )osisi 6ab di "awah . "uatlah posisi tab pada posisi kiri
#ambar 7.4 )osisi 6ab di ,iri . "uatlah posisi tab pada posisi kanan
<5
BAB X
<3
B,)La/,"oC>ayout digunakan untuk membuat tampilan berdasarkan 1J$ , yaitu A . XAAXIS etiap komponen yang ditambahkan pada layout, akan diposisikan pada kanan sesudah komponen sebelumnya.
#ambar 12.1. "oC>ayout J01J$ . 3AAXIS etiap komponen yang ditambahkan pada layout, akan diposisikan pada komponen sebelumnya
#ambar 12.2. "oC>ayout H01J$ B,) )enggunaan "oC sama dengan "oC>ayout, hanya penamaannya saja yang berbeda, yaitu A . H,riB,n a' B,) etiap komponen yang ditambahkan pada layout, akan diposisikan pada kanan sesudah komponen sebelumnya.
<E
#ambar 12.4. "oC 8oriIontal . Ver i!a' B,) etiap komponen yang ditambahkan pada layout, akan diposisikan pada komponen sebelumnya
12.5 ."oC
)enggunaan layout #rid"ag>ayout se!ara logika menyerupai #rid>ayout, hanya saja benar memposisikan kolom dengan intial gridy dan baris dengan intial gridy. ,elebihan dari layout ini adalah dapat membuat menyatukan kolom dan baris untuk satu komponen, lihat #ambar 12.3 pada button E.
#ambar 12.3."oC 8oriIontal Bontoh aplikasi pada #ambar 12.E dapat dideskripsikan sebagai berikut A btn1 %2,2& %2,1& btnE %2, 2 N 1& great8eigh G 2, btn2 %2,1& btn5 %1,1& @rid/agConstraints./2TD
<<
btn4 %2,2& . . . . . .
btn3 %1,2&
%2,2&
"utton1, berada pada posisi C G 2 dan y G1 "utton2, berada pada posisi C G 2 dan y G1 "utton4, berada pada posisi CG 2 dan yG2 "utton5, berada pada posisi C G1 dan yG 1 "utton3, berada pada posisi C G1 dan y G2 "uttonE, berada pada posisi CG2 dan y G 2 N1
Bontoh program A
//program ke tiga (elas //diam(il dari www.sun.com import java.awt.*; pu(lic class 1irection extends !rame " /utton (tn19 (tn'9 (tnF9 (tnH9 (tn;9 (tn6; :rid*ag+a;out gridbag; :rid*ag-onstraints c; pu(lic static void main#)tring argv*+$ " new 1irection#$.s%ow#$; & void make/uttons#$ " (tn1 , new /utton#-/utton (tn' , new /utton#-/utton (tnF , new /utton#-/utton (tnH , new /utton#-/utton (tn; , new /utton#-/utton (tn6 , new /utton#-/utton & 1-$; '-$; F-$; H-$; ;-$; 6-$; add#(tn1$; add#(tn'$; add#(tnF$; add#(tnH$; add#(tn;$; add#(tn6$;
pu(lic 1irection#$ " gridbag " new :rid*ag+a;out(!; set0aGout#grid(ag$; c " new :rid*ag-onstraints(!; make/uttons#$; && btn1 ,itempat'an pada posisi (565! gridbag.set-onstraints(btn16 c!; && btn% berada di bawa# btn1 (561! && grid; dengan posisi 9/+A21P/ (5N1! c.gridx " 5; gridbag.set-onstraints(btn%6 c!; && btn8 gridx " 5 &&grid; dengan posisi 9/+A21P/ (1 N 1!
<9
&& btn8 grid; " % gridbag.set-onstraints(btn86 c!; && btn> gridx dengan posisi 9elative (5 N 1! && btn> grid; " 1 && btn> (161! c.gridx " :rid*ag-onstraints.9/+A21P/; c.grid; " 1; gridbag.set-onstraints(btn>6 c!; && btn< (16%! c.gridx " 1; c.grid; " %; gridbag.set-onstraints(btn<6 c!; && btnS posisi (%65! c.gridx " %; c.grid; " 5; c.weig#tx " 5.5; && btnS 'etinggian % baris && 'emudian digabung'an && btnS (%65! sampai dengan (%61! c.grid#eig#t " %; c.fill " :rid*ag-onstraints.*.2L; gridbag.set-onstraints(btnS6 c!; & & resi:e#H889 '88$;
!,.8&,r'an*86&!'8'a/,- 8C (X3La/,- 56&!'86ar" *an N-'' La/,>ayout J dan H, memiliki banyak model dari banyak pengembang dan salah satunya adalah dari "orland dan *ull >ayout dari Java tandar. +odel ini menggunakan piCel sebagai posisi J dan H. "egitu pula dengan panjang dan tinggi dari komponen. Bontoh pada #ambar 12.E dikembangkan dengan menggunakan JH>ayout dan *ull >ayout A
<7
92
txt7im.setText#--$; txt7ama.setText#--$; c%)1.setToolTipText#--$; c%)1.setText#-)1-$; c%)M<.setText#-)M<-$; c%)MB.setText#-)MB-$; rdT5.setText#-T5-$; rdM5.setText#-M5-$; rdBI.setText#-BI-$; rdTI.setText#-TI-$; cmd)ave.setText#-Tampil-$; cmd3nd.setBctionCommand#--$; cmd3nd.setText#-)elesai-$; grp grp grp grp urusan.add#rdT5$; urusan.add#rdM5$; urusan.add#rdBI$; urusan.add#rdTI$;
xM0aGout1.setNidt%#H88$; xM0aGout1.setDeig%t#1PF$; t#is.set,efault-lose.peration(/0123.43-+.S/!; t#is.get-ontentJane(!.add( lbl4im6 new 0?-onstraints(8=6 %S6 ==6 1C! !; t#is.get-ontentJane(!.add( lbl4ama6 new 0?-onstraints(8S6 <86 =%6 B! !; t#is.get-ontentJane(!.add( lblJurusan6 new 0?-onstraints(886 BC6 <<6 18! !; t#is.get-ontentJane(!.add( rd216new 0?-onstraints(11>6 B%6 >%6 %<! !; t#is.get-ontentJane(!.add( rdE16 new 0?-onstraints(1S>6 B86 >%6 %5! !; t#is.get-ontentJane(!.add( rdAK6 new 0?-onstraints(%%%6 BS6 >%6 %1! !; t#is.get-ontentJane(!.add( rd2K6 new 0?-onstraints(%=S6 BS6 S>6 1B! !; t#is.get-ontentJane(!.add( cmbKampus6new 0?-onstraints(11C6 1%56 1><6 %%! !; t#is.get-ontentJane(!.add( lblKampus6 new 0?-onstraints(8%6 1%86 S=6 11! !; t#is.get-ontentJane(!.add( cmdSave6 new 0?-onstraints(%B6 1<86 11>6 %=! !; t#is.get-ontentJane(!.add( cmd/nd6 new 0?-onstraints(1S56 1<%6 1>%6 %B! !;
91
t#is.get-ontentJane(!.add( c#SEA6 new 0?-onstraints(%%16 ==6 <S6 1S! !; t#is.get-ontentJane(!.add( lblSertifi'at6 new 0?-onstraints(8>6 ==6 S>6 1>! !; t#is.get-ontentJane(!.add( c#S,6 new 0?-onstraints(11>6 ==6 >=6 1S! !; t#is.get-ontentJane(!.add( c#SEJ6 new 0?-onstraints(1S16 =S6 <C6 1S! !; t#is.get-ontentJane(!.add( txt4ama6 new 0?-onstraints(11S6 <56 1B<6 %8! !; t#is.get-ontentJane(!.add( txt4im6 new 0?-onstraints(11=6 %B6 =56 %5! !; & & pu(lic class praktek6' " pu(lic static void main#)tring args*+$ " new frame1#$.s%ow#$; & &
//program ke empat(elas / //Menggunakan 7ull 0aGout import javax.swing.*; import java.awt.*; import com.(orland.j(cl.laGout.*; import java.awt.event.*; class !rameH extends !rame " 0a(el l(l7im , new 0a(el#$; 0a(el l(l7ama , new 0a(el#$; 0a(el l(l)ertifikat , new 0a(el#$; 0a(el l(l urusan , new 0a(el#$; 0a(el l(lIampus , new 0a(el#$; Text!ield txt7im , new Text!ield#$; Text!ield txt7ama , new Text!ield#$; C%eck/ox c%)1 , new C%eck/ox#$; C%eck/ox c%)M< , new C%eck/ox#$; C%eck/ox c%)MB , new C%eck/ox#$; /utton@roup grp urusan , new /utton@roup#$; Cadio/utton rdT5 , new Cadio/utton#$; Cadio/utton rdM5 , new Cadio/utton#$; Cadio/utton rdBI , new Cadio/utton#$; Cadio/utton rdTI , new Cadio/utton#$; )tring sIampus*+ , " -Cempaka <uti%-9-Cileduk-9-CoxG-9-)alem(a-
92
&; Com(o/ox cm(Iampus , new Com(o/ox#sIampus$; /utton cmd)ave , new /utton#$; /utton cmd3nd , new /utton#$; pu(lic !rameH#$ " super#-.niversitas /udi 0u%ur-$; set)i:e#H889';8$; set0ocation#189188$; trG " j(5nit#$; & catc%#3xception ex$ " ex.print)tackTrace#$; & & void j(5nit#$ t%rows 3xception " l(l7im.setText#-7im-$; l(l7im.set/ounds#new Cectangle#FQ9 '69 QQ9 1R$$; t#is.get-ontentJane(!.set+a;out(null!; l(l7ama.setText#-7ama-$; lbl4ama.set*ounds(new 9ectangle(8S6 <86 %=6 1<!!; l(l)ertifikat.setText#-)ertifikat-$; lblSertifi'at.set*ounds( new 9ectangle(8>6 ==6 S>6 1>! !; l(l urusan.setText#- urusan-$; lblJurusan.set*ounds(new 9ectangle(886 BC6 <<6 18!!; l(lIampus.setText#-Iampus-$; lblKampus.set*ounds(new 9ectangle(8%6 1%86 S=6 11!!; txt7im.setText#--$; txt4im.set*ounds(new 9ectangle(11=6 %B6 =56 %5!!; txt7ama.setText#--$; txt4ama.set*ounds(new 9ectangle(11S6 <56 1B<6 %8!!; c%)1.setToolTipText#--$; c%)1.setText#-)1-$; c#S,.set*ounds(new 9ectangle(11>6 ==6 >=6 1S!!; c%)M<.setText#-)M<-$; c#SEJ.set*ounds(new 9ectangle(1S16 =S6 <C6 1S!!; c%)MB.setText#-)MB-$; c#SEA.set*ounds(new 9ectangle(%%16 ==6 <S6 1S!!; rdT5.setText#-T5-$; rd21.set*ounds(new 9ectangle(11>6 B%6 >%6 %<!!; rdM5.setText#-M5-$; rdE1.set*ounds(new 9ectangle(1S>6 B86 >%6 %5!!; rdBI.setText#-BI-$; rdAK.set*ounds(new 9ectangle(%%%6 BS6 >%6 %1!!; rdTI.setText#-TI-$; rd2K.set*ounds(new 9ectangle(%=S6 BS6 S>6 1B!!; cmdSave.set*ounds(new 9ectangle(%B6 1<86 11>6 %=!!; cmd)ave.setText#-Tampil-$; cmd/nd.set*ounds(new 9ectangle(1S56 1<%6 1>%6 %B!!; cmd3nd.setBctionCommand#--$; cmd3nd.setText#-)elesai-$;
94
cmbKampus.set*ounds( new 9ectangle(11C6 1%56 1><6 %%! !; grp urusan.add#rdT5$; grp urusan.add#rdM5$; grp urusan.add#rdBI$; grp urusan.add#rdTI$; t%is.set1efaultClose2peration#345T6276C02)3$; t%is.getContent<ane#$.add#l(l7im9 null$; t%is.getContent<ane#$.add#l(l7ama9 null$; t%is.getContent<ane#$.add#l(l urusan9 null$; t%is.getContent<ane#$.add#rdT59 null$; t%is.getContent<ane#$.add#rdM59 null$; t%is.getContent<ane#$.add#rdBI9 null$; t%is.getContent<ane#$.add#rdTI9 null$; t%is.getContent<ane#$.add#cm(Iampus9 null$; t%is.getContent<ane#$.add#l(lIampus9 null$; t%is.getContent<ane#$.add#cmd)ave9 null$; t%is.getContent<ane#$.add#cmd3nd9 null$; t%is.getContent<ane#$.add#c%)MB9 null$; t%is.getContent<ane#$.add#l(l)ertifikat9 null$; t%is.getContent<ane#$.add#c%)19 null$; t%is.getContent<ane#$.add#c%)M<9 null$; t%is.getContent<ane#$.add#txt7ama9 null$; t%is.getContent<ane#$.add#txt7im9 null$;
&
& pu(lic class praktek6' " pu(lic static void main#)tring args*+$ " new frame1#$.s%ow#$; & &
B,r'an* JB-i'*er )roduk J"uilder merupakan perangkat lunak bantu untuk membuat aplikasi Java dalam bentuk $DD. J"uilder oleh pengembangnya, "orland %httpALLww.borland.!om&, mempunyai 4 %tiga& versi, yaitu A . Enterprise Edition )roduk Enterprise Edition dilengkapi dengan pemrograman J2DD, -eb ervi!es dan 1plikasi yang terintegrasi dengan peningkatan performan %tunin &. . /evelepor Edition ?ersi /eveloper Edition merupakan versi khusus untuk pengembang untuk membuat program, tetapi tidak selengkap versi Enterprise Edition. . 'oundation
95
?ersi 'oundation dikhususkan untuk pemula dan dapat diunduh % do*nload& gratis pada web site httpALLwww.borland.!om, dengan spesifikasi komputer, yaitu pentium $$$ dan minimal memori 23E +b. Instalasi Borland JBuilder Untuk menginstalasi aplikasi !ukuplah mudah, lakukanlah beberapa langkah dibawah ini A 1. Unduhlah J"uilder versi terakhir pada httpALLwww.borland.!om, kemudian lakukan instalasi dengan meng.clic# pada file setup, yaitu fnd0install.eCe dan akan tampil layar seperti di bawah ini A
#ambar 12.< 6ahap persiapan instalasi program J"uilder 2. etelah proses persiapan instalasi telah selesai akan tampil layar seperti pada #ambar 12.9, kemudian tekan tombol next
93
#ambar 12.9 6ampilan )engenalan J"uilder 4. )ada layar tampilan pada gambar license pilihlah radio button $ +ccept The Ter!s o" The 0icence + ree!ent, kemudian tekan tombol next
#ambar 12.7 6ampilan )ersetujuan >isensi J"uilder 5. )ilihlah tempat direktori pada komputer untuk instalasi atau instalasi akan ditempatkan pada direktori ;BAVJbuilder;
9E
#ambar 12.12 )enempatan direktori instalasi J"uilder 3. >akukan proses instalasi selanjutnya dengan menekan tombol $nstall
9<
Membuat Program Aplikasi GUI dengan menggunakan JBuilder 1. 1ktifkan J"uilder pada start menu 1ll )rogram "orland J"uilder J 'oundation "orland J"uilder J 'oundation 2. Untuk pertama kali menggunakan aplikasi J"uilder akan diminta untuk melakukan regristrasi atau pendaftaran atau memasukkan aktivasi file 4. 1kan tampil layar seperti gambar dibawah ini A
#ambar 12.14 6ampilan 1plikasi Dditor J"uilder 5. "uatlah 1plikasi Java dengan menggunakan menu 'ile *ew, akan tampil layar seperti pada #ambar 12.15, kemudian pilihlah ikon 1ppli!ation
99
3.
etelah tombol ikon 1ppli!ation telah terpilih, berilah nama proje!t, !ontoh A 6esting
#ambar 12.13 >angkah -iIard )ertama Dari ,e 6iga E. 6ekan tombol next pada proses Wi)ard ke dua
97
<. +asukkan identitas pembuat aplikasi, lalu tekan lah tombol 'inish
#ambar 12.1< )engisian $dentifikasi )embuat )rogram 9. +asukkan nama aplikasi yang akan kita buat, Bontoh A 6esting
72
#ambar 12.17 >angkah ,edua )emberian *ama 'rame 12. 6ekan tombol "inish pada langkah ketiga
71
Desain GUI
#ambar 12.21 >ayar Dditor J"uilder Untuk 1plikasi 6esting 12. )ilihlah tab atas dengan nama frm6esting kemudian pilih tab bawah dengan tulisan Design R-n O&6e! T,,'s
72
#ambar 12.22 Desain J'rame )ada J"uilder NETBEANS 1plikasi bantu untuk pembuatan program Java ini telah didukung penuh penggunaannya oleh U* +i!rosystem dan gratis. 1plikasi *etbeans versi terbaru dapat diunduh %do*nload& pada website httpALLwww.sun.!om atau pada U(> httpALLwww.sun.!omLdownloadLindeC.jsp=!atGJava W22W2EW226e!hnologiesNtabG4Nsub!atGJava untuk versi terbaru. pesifikasi komputer yang dibutuhkan adalah komputer setingkat pentium $$$ dan minimal memori 23E+b %dianjurkan penulis 312 +b&. Untuk mengenal lebih lanjut perkembangan *etbean, anda dapat melihat pada website httpALLwww.netbeans.org Instalasi Netbeans )roses instalasi, sesudah mengunduh dari internet, dengan menjalankan aplikasi setup !ontoh A jdk.1030202E.nb.501.win.ml.eCe. +aka lanjutkan tahap berikutnya seperti dibawah ini A 1. )ersiapan $nstalasi dan apabila telah tampil layar instalai *i)ard tekan tombol 1ext
74
#ambar 12.25 $nstalasi *i)ard *et"eans 2. )ada layar lisensi penggunaan pilih radio button ;$ accept The Ter!s $n The 0icense + ree!ent , kemudian tekan tombol 1ext.
#ambar 12.23 ,esepakatan >isensi *et"eans 4. $silah direktori instalasi, Bontoh A BAV)rogram 'ilesVnetbeans.5.1, kemudian tekan tombol 1ext
75
#ambar 12.2< $nstalasi *et"eans edang "erjalan 3. etelah )roses $nstalasi 6ekan 6ombol 'inish
73
Membuat Aplikasi GUI Dengan Menggunakan NetBeans 1. Jalankan 1plikasi *et"eans dengan memilih $kon pada tart 1ll )rogram *etbeans *etbeans
#ambar 12.27 6ampilan Dditor *et"eans 2. "uatlah aplikasi dengan memilih menu 'ile *ew )roje!t, kemudian pilihlah general Java 1pli!ation
7E
#ambar 12.42 1plikasi Java 4. +asukkan nama proje!t, !ontoh A 6esting, kemudian tekan tombol 'inish
7<
5. )ilihlah menu 'ile *ew 'ile, kemudian pilihlah Java #U$ 'orm J'rame 'orm
#ambar 12.44 +embuat J'rame )ada *et"eans 3. +asukkan nama form, !ontoh A frm6esting
79
Pa''e e (T,,'s"
Pr,6e! E)1',rer
Ins1e! ,r
#ambar 12.43 >ayar Dditor frm6esting <. 6ambahkan perintah tambahan pada +ain.java publi! !lass +ain X LFF Breates a new instan!e of +ain FL publi! +ain%& X Y LFF F /param args the !ommand line arguments FL publi! stati! void main% tringZ[ args& X LL 6:D: !ode appli!ation logi! here fr.Tes in2 fr. E ne0 fr.Tes in2("F fr.8se Visi&'e( r-e"F Y Y
77
122
La i$an G . "uatlah layar tampilan seperti pada #ambar 12.2E dengan menggunakan J"uilder dan *et"eans
121
BAB XI
122
. . . . . . . .
1dapun deskripsi dari masing.masing kesalahan atau error adalah 6a7a8a0 8A9TE)!e1 i,n Exeception yang berasal dari Java 1bstra!t -indow 6oolkit %1-6&. 6a7a8'an28+'assN, F,-n*E)!e1 i,n aat pertama pembuatan !lass dan !lass tersebut tidak ditemukan. 6a7a8'an28+',neN, S-11,r e*E)!e1 i,n ebagian besar objek dapat diduplikat %clone& dengan menggunakan method !lone%&. )esan akan timbul apabila objek tidak dapat diduplikasi. 6a7a8i,8IOE)!e1 i,n +endeskripsikan se!ara umum dari pesan $: %$nputLOutput&. 6a7a8i,8EOFE)!e1 i,n )esan mun!ul saat pemba!aan akhir dari file %end o" "ile& 6a7a8i,8Fi'eN, F,-n*E)!e1 i,n 'ile tidak ditemukan saat pemba!aan. 6a7a8i,8In err-1 e*IOE)!e1 i,n )enggunaan interupsi $: tetapi gagal dilakukan 6a7a8ne 8Ma'f,r.e*URLE)!e1 i,n Universal (esource 0ocator atau U(>, yang lebih dikenal dengan $nternet +ddress tidak dapat dihubungi. 6a7a8ne 8Pr, ,!,'E)!e1 i,n 6erdapat kesalahan pada saat penggunaan proto!ol di class soc#et 6a7a8ne 8S,!ke E)!e1 i,n )esan kesalahan saat penggunaan soc#et 6a7a8i,8UTFDa aF,r.a E)!e1 i,n
124
U6'.9 adalah model karakter Unicode yang dapat dirubah menjadi karakter 1 B$$, pesan kesalahan terjadi dikarenakan kegagalan saat melakukan transfer data. 6a7a8ne 8Unkn,0nH,s E)!e1 i,n 6he host name didn\t mat!h with any known hosts. 6a7a8ne 8Unkn,0nSer7i!eE)!e1 i,n ervis pada koneksi jaringan tidak ada 6a7a8'an28I''e2a'A!!essE)!e1 i,n #agal mengakses 6a7a8'an28Ins an ia i,nE)!e1 i,n )esan kesalahan saat membuat objek abstrak atau inter"ace. 6a7a8'an28In err-1 e*E)!e1 i,n $nterupsi terjadi saat melukan proses Thread 6a7a8'an28N,S-!$Me $,*E)!e1 i,n )esan kesalahan ini jarang sekali terjadi, pesan ini akan tampil apabila terjadi penghapusan !ethod dari class. 6a7a8'an28R-n i.eE)!e1 i,n )ada saat program dijalankan terdapat kesalahan dalam pemrograman %bu & 6a7a8'an28Ari $.e i!E)!e1 i,n )esan kesalahan dalam penggunaan angka kosong %)ero& 6a7a8'an28Arra/S ,reE)!e1 i,n #agal dalam penggunaan array. 6a7a8'an28+'ass+as E)!e1 i,n 6erdapat kesalahan dalam penge!ekan !lass awal 6a7a8- i'8E.1 /S a!kE)!e1 i,n ebuah objek pada class tersusun dalam posisi kosong 6a7a8'an28I''e2a'Ar2-.en E)!e1 i,n ,emungkinan disebabkan penggunaan yang salah dari library. 6a7a8'an28I''e2a'T$rea*S a eE)!e1 i,n #agal menjalankan thread, dikarenakan thread yang sudah ada telah aktif. 6a7a8'an28N-.&erF,r.a E)!e1 i,n +engindikasikan perbedaan format angka.
125
6a7a8'an28I''e2a'M,ni ,rS a eE)!e1 i,n #agal melakukan monitoring pada thread. 6a7a8'an28In*e)O- OfB,-n*sE)!e1 i,n $ndeC melebihi dari yang seharusnya 6a7a8'an28Arra/In*e)O- OfB,-n*sE)!e1 i,n )enggunaan array indeC yang lebih dari seharusnya. 6a7a8'an28S rin2In*e)O- OfB,-n*sE)!e1 i,n )ada &trin , tidak disarankan penggunaan kosong atau lebih dari panjang karakter strin . 6a7a8'an28Ne2a i7eArra/SiBeE)!e1 i,n 6idak dapat mengalokasikan nilai array negative. 6a7a8- i'8N,S-!$E'e.en E)!e1 i,n Dnumeration kosong. 6a7a8'an28N-''P,in erE)!e1 i,n )enggunaan null pada objek penulisan Drror DC!eption, diawali dengan tryXY dengan minimal satu !at!hXY atau finnalyXY untuk menangkap kesalahan program.
tr;{ // Iode <rogram Mang Bkan //1iperkirakan Terjadi Error Exception $ catc#(t;pe1 id1! { // <enanganan Error Exception dari tGpe1 $ catc#(t;pe% id%! { // <enanganan Error Exception dari tGpe' $ catc#(t;pe8 id8! { // <enanganan Error Exception dari tGpeF $ // dst
Bontoh program A
//program kelima (elas pu(lic class 3xceptionMet%ods " pu(lic static void main#)tring args*+$ " tr; { //sengaja dikasi% error t%row new 3xception#-DereSs mG 3xception-$; $ catc#(/xception e! { )Gstem.out.println#-Caug%t 3xception-$; )Gstem.out.println#
123
$ & &
)enanganan kesalahan program pada modul dapat juga dilewati atau tidak diindahkan dengan menggunakan perintah $r,0 sehingga kesalahan program tersebut dapat ditangkap oleh modul pemanggil. 1pabila $r,0 ditempatkan pada posisi main, hal itu mempunyai arti ;biarkanlah kesalahan tersebut ditangani oleh sistem;. Bontoh program keenambelas menggunakan logika sebagai berikut A main g%& f%&
12E
& &
t#rows 2#rowable " trG " g#$; & catc%#3xception e$ " )Gstem.out.println# -Caug%t in main9 e.print)tackTrace#$$; e.print)tackTrace#$; &
Untuk mengurangi beban memori pada saat penge!ekan kesalahan program menggunakan perintah fina''/8 ebelum membahas penggunaan fina''/ terlebih dahulu perhatikan program ke. tujuhbelas.
//program ke tuju%(elas //Tidak Menggunakan !inallG class )witc% " (oolean state , false; (oolean read#$ " return state; & void on#$ " state , true; & void off#$ " state , false; & & pu(lic class 2n2ff)witc% " static )witc% sw , new )witc%#$; pu(lic static void main#)tring args*+$ " tr; { sw.on(!; && code t#at ma; t#row exceptions... $ catc#(4ullJointer/xception e! { S;stem.out.println((4ullJointer/xception(!; sw.off(!; $ catc#(1llegalArgument/xception e! { S;stem.out.println((1./xception(!; sw.off(!; $ $ &
12<
)ada program ke.tujuhbelas penge!ekan error dilakukan. etiap penge!ekan memangil objek sw.off%&. edangkan pada program k.e delapanbelas setelah penge!ekan pemanggilan objek sw.off%&, maka !ukup sekali panggilan pada posisi fina''/.
129
2. 1pakah penulisan program di bawah ini diperbolehkan dan tetap mendapatkan pesan kesalahan=
!a !$ (E)!e1 i,n e" I J
4. 1pakah akan terjadi kesalahan pada program di bawah ini= 1kankah program dapat terkompilasi dengan baik=
r/ I J !a !$ (E)!e1 i,n e" I J !a !$ (Ari $.e i!E)!e1 i,n a" I J
127
BAB XII
T$rea*
)ada pemrograman yang terstruktur, pengembang program melakukan pemanggilan modul se!ara berurutan. +aksudnya adalah jika ada ada tiga modul, yaitu modul 1, modul ", dan modul B maka modul utama akan memanggil sesuai urutannya.
#ambar 12.1 ingle 6hread +odul utama memanggil modul 1 kemudian memanggil modul ", lalu memanggil modul B, yang berarti setelah modul 1 selesai diproses, maka modul " akan diproses kemudian baru modul B. Dengan kata lain modul " tidak akan diproses apabila modul 1 belum habis diproses. "egitu pula modul B, modul tersebut tidak akan diproses apabila modul 1 dan " belum diproses. )rogram ke.sembilanbelas adalah merupakan !ontoh program yang berjalan se!ara terstruktur atau sin2'e $rea*. Dimana setelah horse1 telah selesai di proses maka horse2 diproses, kemudian horse4 diproses.
//program ke sem(ilan(elas //single t%read pu(lic class racesingle" pu(lic static void main#)tring args*+$" raceTest %orse1 , new raceTest#$; raceTest %orse' , new raceTest#$; raceTest %orseF , new raceTest#$; )Gstem.out.println#-LnCace )tarting ....Ln-$; )Gstem.out.println#-Cace startedTLnLn-$; %orse1.run#-%orse1-$; %orse'.run#-%orse'-$; %orseF.run#-%orseF-$; & & class raceTest" private int pause; private int stage,8; pu(lic void run#)tring name$" trG" )Gstem.out.println#name K - startedT-$; do" )Gstem.out.println#
112
- O stageJ - K #stageK1$ $; pause , #int$ #Mat%.random#$ * 1888$; stageKK; & w%ile #stage>;$;
8asil program A
Cace )tarting .... Cace startedT %orse1 startedT O stageJ 1 O stageJ ' O stageJ F O stageJ H O stageJ ; %orse1 finis%edT %orse' startedT O stageJ 1 O stageJ ' O stageJ F O stageJ H O stageJ ; %orse' finis%edT %orseF startedT O stageJ 1 O stageJ ' O stageJ F O stageJ H O stageJ ; %orseF finis%edT !inis%ed executing
"erbeda dengan dengan multithread, setiap modul dapat dijalankan pada waktu yang bersamaan. ebagai ilustrasinya terlihat pada #ambar 12.2 di bawah ini.
111
#ambar 12.2 +ulti 6hread Jika ada modul 1, modul " dan modul B yang dipanggil oleh main, maka proses yang terjadi adalah modul 1 akan diproses, kemudian tanpa menunggu proses modul 1 selesai, modul " dapat diproses, begitu pula dengan modul B, tanpa menunggu proses modul 1 dan " selesai, modul B sudah dapat diproses. Dengan kata lain, multithread adalah A . atu atau beberapa modul yang dijalankan se!ara bersamaan %!ultiproses&, dimana masing.masing modul tersebut dijalankan pada jalur masing.masing . +asing modul menjalankan kode atau script program se!ara berurutan . +ultithread sering pula disebut dengan multiproses atau multitasking pada sistem operasi. Bara penulisan multithread ada dua ma!am, yaitu . e) en*s T$rea* o +ultithread diimplementasikan sebagai objek dimana objek tersebut mempunyai +ethod run%& class MGT%read extends T%read" public void run(! " // t%read (odG of execution & & o +embuat threadA MGT%read t%r1 , new MGT%read#$; o +enjalankan threadA t%r1.start#$; o 1tau +embuat 6hread ,emudian Dijalankan new MGT%read#$.start#$; . i.1'e.en s r-nna&'e
112
o struktur class MGT%read implements 9unnable" ..... pu(lic void run#$" // t%read (odG of execution & & o +embuat :bjek MGT%read mG2(ject , new MGT%read#$; o +embuat 6hread :bje!tA T%read t%r1 , new T%read# mG2(ject $; o Bara menjalankan t%r1.start#$; )rogram ke.duapuluh adalah program yang telah dimodifikasi dari program ke. sembilanbelas, dari yang menggunakan single thread menjadi program yang menggunakan multithread
//program keduapulu% //multit%read pu(lic class race" pu(lic static void main#)tring args*+$" raceT%read %orse1 , new raceT%read#-%orse1-$; raceT%read %orse' , new raceT%read#-%orse'-$; raceT%read %orseF , new raceT%read#-%orseF-$; )Gstem.out.println#-LnCace )tarting ....Ln-$; // Mulai T%read #orse1.start(!; #orse%.start(!; #orse8.start(!; )Gstem.out.println#-Cace startedTLnLn-$; & & class raceT%read extends T%read" private int pause; private int stage,8; pu(lic raceT%read#)tring name$" super#name$; & pu(lic void run#$" trG" do " )Gstem.out.println# t%is.get7ame#$
114
K - O stageJ - K #stageK1$ $; pause , #int$ #Mat%.random#$ * 1888$; T%read.sleep#pause$; stageKK; & w%ile #stage>;$; & catc%#5nterrupted3xception exception$" )Gstem.out.println#exception.to)tring#$$; & )Gstem.out.println#get7ame#$ K - finis%edT-$;
& &
)rogram di atas menggunakan multithread yang berarti modul horse1 diproses, kemudian tanpa harus menunggu horse1 selesai diproses, maka horse2 dapat diproses, begitu pula horse4, sudah dapat diproses tanpa harus menunggu horse1 dan horse2 selesai. 8asil program A
Cace )tarting .... %orse1 O stageJ 1 %orse' O stageJ 1 Cace startedT %orseF O stageJ 1 %orse1 O stageJ ' %orse1 O stageJ F %orseF O stageJ ' %orse' O stageJ ' %orseF O stageJ F %orse1 O stageJ H %orse' O stageJ F %orse1 O stageJ ; %orseF O stageJ H %orseF O stageJ ; %orse1 finis%edT %orseF finis%edT %orse' O stageJ H %orse' O stageJ ; %orse' finis%edT
)ada penggunaan multithread modul, objek dapat juga diberikan prioritas, sehingga objek yang diberikan prioritas akan diproses sesuai dengan prioritas yang diberikan. Bara memberikan prioritas adalah sebagai berikut A T%read7ame.set<rioritG#int7um(er$ )arameter int*umber pada set)riority%int*umber& dapat diberikan nilai dari 1 sampai dengan 12. 1tau menggunakan variable system sebagai berikut A +$*0)($:($6H G 1 *:(+0)($:($6HG3 115
& &
113
)rogram ke.duapuluhsatu adalah program yang memberikan nilai prioritas normal,yaitu 3, pada thread1, kemudian pada thread" diberikan nilai prioritas minimum, yaitu 1, dan pada threadB, diberikan nilai prioritas tertinggi, yaitu 12. ehingga pada saat thread1, thread", dan threadB dijalankan, maka program Java akan mendahulukan threadB untuk diproses, kemudian thread1 dan thread". )enggunaan multithread dapat mengakibatkan bentrokan yang dikenal dengan istilah $nconsistent &tate, yaitu apabila terdapat lebih dari satu thread yang melakukan proses pada data yang sama. Untuk menghindari bentrokan tersebut, maka pada pemrograman Java disediakan fasilitas S/n!$r,niBe* ( ocking !he "b#ect"8 Bontohnya adalah ketika ada objek yang bernama a!!ount digunakan oleh beberapa objek, yaitu +y6hread, Hour6hread, dan 8er6hread, lihat #ambar 12.4. Didalam objek a!!ount tersebut ada nilai yang diubah oleh ketiga objek yang mengakses objek a!!ount. +y6hread menambah nilai 1 sebanyak 12 kali dengan pemanggilan objek sebanyak 3 kali pada variabel balan!e di dalam objek a!!ount. Hour6hread mengurangi nilai 1 sebanyak 12 kali pada variable balan!e di dalam objek a!!ount dengan pemanggilan objek sebanyak 3 kali Dan 8er6hread hanya menampilkan nilai variable balan!e sebanyak 12 kali didalam objek. Dengan kata lain balan!e G 2 O %1 J 12 J 3& T %1 J 12 J 3&, hasilnya adalah 2. 1pabila objek tersebut tidak menggunakan s/n!$r,niBe*, maka akan terjadi inconsistent state sehingga nilai tersebut belum tentu menghasilkan nilai 2.
M/T$rea*
3,-rT$rea*
11E
Bontoh program A
//program ke duapulu% dua class 1nternet*an'ingS;stem " pu(lic static void main#)tring *+ args $ " Bccount account2(ject , new Bccount #$; T%read t1 , new T%read#new MGT%read#account2(ject$$; T%read t' , new T%read# new MourT%read#account2(ject$ $; T%read tF , new T%read#new DerT%read#account2(ject$$; t1.start#$; t'.start#$; tF.start#$; & & class E;2#read implements Cunna(le " Bccount account; private int pause; private int i , 8; pu(lic MGT%read #Bccount s$ " account , s;& pu(lic void run#$ " trG " do " account.deposit#$; pause , #int$ #Mat%.random#$ * 18$; T%read.sleep#pause$; iKK; & w%ile #i>;$; &catc%#5nterrupted3xception exception$" )Gstem.out.println#exception.to)tring#$$; & & & class ?our2#read implements Cunna(le " Bccount account; private int pause; private int i , 8; pu(lic MourT%read #Bccount s$ " account , s;& pu(lic void run#$ " trG " do " account.wit%draw#$; pause , #int$ #Mat%.random#$ * 18$; T%read.sleep#pause$; iKK; & w%ile #i>;$; &catc%#5nterrupted3xception exception$" )Gstem.out.println#exception.to)tring#$$; & & & class Ler2#read implements Cunna(le " Bccount account; private int pause; private int i , 8;
11<
pu(lic DerT%read #Bccount s$ " account , s; & pu(lic void run#$ " trG " do " account.enUuire#$; pause , #int$ #Mat%.random#$ * 18$; T%read.sleep#pause$; iKK; & w%ile#i>;$; &catc%#5nterrupted3xception exception$" )Gstem.out.println#exception.to)tring#$$; &
& &
//s%ared o(ject class Account { int balance " 5; int i"5; public void deposit( ! { i"5; do { balance N" 1; iNN; S;stem.out.println(balance N ( deposit ( N i!; $w#ile (iD15!; $ public void wit#draw( ! { i"5; do { balance R" 1; iNN; S;stem.out.println(balance N ( wit#draw ( N i !; $w#ile (iD15!; $ public void enTuire( ! { i"5; do { iNN; S;stem.out.println(balance N ( /nTuire ( N i!; $w#ile (iD15!; $
8asil program
1 ' F H ; A deposit deposit deposit deposit deposit 1 ' F H ;
119
,emudian rubahlah program ke.duapuluhdua dengan tambahan s/n!$r,niBe* pada semua method di objek !lass a!!ount.
class Bccount " int (alance , 8; int i,8; pu(lic s;nc#roni7ed void deposit# $ " i,8; do " (alance K, 1; iKK; )Gstem.out.println#(alance K - deposit - K i$; &w%ile #i>18$; & pu(lic s;nc#roni7ed void wit%draw# $ " i,8; do " (alance O, 1; iKK; )Gstem.out.println#(alance K - wit%draw - K i $; &w%ile #i>18$; & pu(lic s;nc#roni7ed void enUuire# $ " i,8; do " iKK; )Gstem.out.println#(alance K - 3nUuire - K i$; &w%ile #i>18$; &
&
117
8 3nUuire F 8 3nUuire H 8 3nUuire ; 8 3nUuire 6 8 3nUuire Q 8 3nUuire R 8 3nUuire P 5 /nTuire 15 !inis%ed executing
122
La i$an %% "uatlah Jam yang bergerak setiap detik seperti layar tampilan dibawah ini A
121
BAB XIII
AKSES FILE
)ada pemrograman Java standar, fasilitas untuk mengakses file menggunakan java.io.F. Untuk mengakses file pada sistem operasi UniC, pemisah antara direktori dan file menggunakan tanda slash %;L;&, !ontohnya LhomeLwinduLtest.tCt. Hang harus diperhatikan adalah UniC merupakan sistem operasi yang case sensitive, sehingga penulisan perintah atau nama dibedakan antara huruf besar dan huruf ke!il. )ada sistem operasi +s. -indows, pemisah antara direktori dan file menggunakan tanda bac#slash %;V;&, !ontohnya A!AVwinduVtest.tCt, dimana penggunaan huruf besar dan huruf ke!il sama saja. 8anya saja pada pemrograman Java untuk memba!a bac#slash menggunakan dua bac#slash %;VV;&, !ontohnya !AVVwinduVVtest.tCt. Untuk memba!a file terdapat 2 %dua& !ara, yaitu se2uential access dan rando! access, SeK-en ia' A!!ess Hang dimaksud dengan se@uential a!!ess adalah pemba!aan data se!ara berurutan. >ebih jelasnya, untuk mendapatkan dataLinformasi, maka program membuat koneksi strea! dari sour!e %file, memori, so!ket, dll&, kemudian program akan memba!a dataLinformasi tersebut se!ara berurutanLse2uential,
#ambar 14.1 e@uential 1!!ess T +emba!a our!e "egitu juga sebaliknya, program dapat mengirimkan dataLinformasi kepada target %file, memori, so!ket, dll& dengan membuat koneksi stream dan mengirimkannya se!ara berurutanLse@uential.
122
#ambar 14.2
Bara pemba!aan maupun penulisan terdapat dua !ara, yaitu char strea! dan byte strea!, Character strea! adalah penggunaan 1E bit karakter untuk melakukan pemba!aan dan penyimpanan data teks. Untuk memba!a file se!ara character strea! menggunakan objek File9eader dan untuk melakukan penulisannya menggunakan objek File@riter. Fi'eRea*er
Constructor
File9eader#!ile file$ +embuat objek !ileCeader (aru,
pemba!aan.
File9eader#!ile1escriptor fd$ +embuat objek !ileCeader (aru dengan parameter !ile1escriptor File9eader#)tring file7ame$ +embuat objek !ileCeader (aru dengan parameter string
Fi'e9ri er
Constructor
File@riter#!ile file$
+embuat objek 'ile-riter dengan parameter nama file dan boolean append.
124
edangkan byte strea! menggunakan 9 bit binari untuk melakukan pemba!aan dan penyimpanan data. 3yte strea! digunakan untuk mengirimkan data berupa file %teks, foto, audio dan bentuk file lainnya&. Di bawah ini terdapat beberapa program se2uential access dengan ran!angan seperti pada #ambar 14.4. Di sana terdapat file yang bernama farrago.tCt yang akan diba!a oleh program, kemudian progam akan menyimpannya dengan nama file outagain.tCt pada direktori yang sama. 'arrago.tCt program outagain.tCt
#ambar 14.4 +emba!a 'ile 'arrago.tCt dan Disimpan ,e outagain.tCt Bontoh program !hara!ter stream A
//program ke dua pulu% tiga //c%aracter stream import java.io.*; pu(lic class dofile " pu(lic static void main#)tring*+ args$ t%rows 523xception " )tring txtmsg,--; trG " !ileCeader in , new !ileCeader#-farrago.txt-$; !ileNriter out , new !ileNriter#-outagain.txt-$; int c; w%ile ##c " in.read(!$ T, O1$" out.write(c!; txtmsg,txtmsg K #c%ar$ c; & in.close(!; out.close(!; & catc% #!ile7ot!ound3xception e$ " )Gstem.err.println#-C%ecked52TestJ - K e$; )Gstem.exit#O1$;
125
& &
123
Ran*,. A!!ess (ando! +ccess melakukan pemba!aan atau penyimpanan dengan a!akLnon se2uential dengan penandaan berupa pointer.
#ambar 14.5 )erbedaan (andom 1!!ess dan e@uential 1!!ess Untuk melakukan pemba!aan atau penyimpanan data menggunakan objek (ando!+ccess'ile,
Constructor
9andomAccessFile#!ile file9 )tring mode$
+embuat objek (andom1!!ess'ile stream dengan parameter objek 'ile dan parameter mode r; untuk memba!a, w; untuk menyimpan atau rw; untuk memba!a dan menulis.
9andomAccessFile#)tring name9 )tring mode$
+embuat objek (andom1!!ess'ile stream dengan parameter r; untuk memba!a, w; untuk menyimpan atau rw; untuk memba!a dan menulis.
12E
+en!ari posisi pointer offset dari posisi awal dari file sampai akhir.
void write#(Gte*+ ($
+enyimpan tipe data byte array dengan panjang tertentu dengan posisi pointer.
void write#int ($
12<
void write-#ars#)tring s$
+enyimpan tipe data string dalam bentuk atau model U6'.9 Bontoh program A
//program ke duapulu% lima //random access import java.io.*; pu(lic class dorandomaccess " pu(lic static void main#)tring*+ args$ t%rows 523xception " )tring txtmsg,--; trG " CandomBccess!ile in ,
new CandomBccess!ile# -farrago.txt-9 (r( $; CandomBccess!ile out , new CandomBccess!ile# -outagain.txt-9 -rw$;
long (Gtelengt%,in.lengt#(!; for # long (Gtecount,8; (Gtecount>(Gtelengt%; (GtecountKK $ " c%ar fc%,(c#ar!in.read(!; out.write((b;te! fc#!; txtmsg,txtmsgKfc%; & in.close(!; out.close(!;
129
& catc% #!ile7ot!ound3xception e$ " )Gstem.err.println#-C%ecked52TestJ - K e$; )Gstem.exit#O1$; & catc% #523xception e$ " )Gstem.err.println#-C%ecked52TestJ - K e$; )Gstem.exit#O1$; & )Gstem.out.println#txtmsg $; & &
elain penggunaan &e2uential dan (ando! 1!!ess, melakukan akses file bisa dengan menggunakan "ilter strea!, yaitu dengan !ara membuat olahan dari data stream kemudian dibentuk menjadi model yang lain. Bontoh "ilter strea!, salah satunya adalah "uffered(eader, yang salah satu method, readline, merubah data stream menjadi perbaris.
Constructor
*uffered9eader#Ceader in$
+embuat buffer dari model karakter kebentuk standar buffer dengan panjang tertentu.
127
& &
/ufferedCeader br , new /ufferedCeader#in$; )tring str; w%ile##str,br.read+ine(!$T,null$ " txtmsg,txtmsgKstrK-Ln-; & out.write(txtmsg!; in.close(!; out.close(!; & catc% #!ile7ot!ound3xception e$ " )Gstem.err.println#-C%ecked52TestJ - K e$; )Gstem.exit#O1$; & catc% #523xception e$ " )Gstem.err.println#-C%ecked52TestJ - K e$; )Gstem.exit#O1$; & )Gstem.out.println#txtmsg$;
142
141
BAB XIV
142
#ambar 15.1 (elasi 6abel )ada #ambar 15.2 terdapat 2 %dua& table yang berhubungan, yaitu tabel nasabah dan tabel transaksi. )ada tabel *asabah yang menjadi Pri!ary -ey adalah *orek dan sebagai &econdary -ey adalah *o16+. edangkan pada table 6ransaksi terdapat Pri!ary -ey yaitu *o6rans dan 'orei n -ey hasil dari relasi dengan table nasabah, yaitu *o(ek. )enggunaan @uery sebagai sarana untuk berinteraksi dengan database, se!ara standar, dapat melakukan manipulasi data seperti membuat tabel %!reate&, mengubah tabel %alter&, menambah data %$nsert&, merubah data %update/edit&, menghapus data %delete&, memba!a data %select& dan fasilitas lainnya. +embuat table mahasiswa Create Ta(le >7ama Ta(el? #>7ama !ield? >Tipe 1ata? #><anjang?$9 *>Model IeG? >7ama !ield?+9 A$ Bontoh A -9/A2/ 2A*+/ ma%asiswa # 7im varc#ar#18$ 72T 4)++ default SS9 7ama varc#ar#;8$ default 4)++9 Blamat varc#ar#'88$ default 4)++9 .mur int#'$ default 89 0ulus int#'$ default 89 J91EA9? K/? #V7imV$ $
144
Bontoh A drop table ma%asiswa +erubah tabel mahasiswa Alter Ta(le >7ama Ta(el? >Bdd=ModifG=C%ange=1rop? >7ama !ield? *>Tipe 1ata? #>panjang?$+ Bontoh A +erubah nama field lulus menjadi kelulusan alter table ma%asiswa -#ange 0ulus Ielulusan int#1$ +enghapus field kelulusan alter table ma%asiswa ,rop Ielulusan +enambah field lulus dengan tipe data integer dengan ukuran panjang 2 alter table ma%asiswa Add 0ulus int#'$ +erubah ukuran panjang dari field lulus dengan ukuran panjang 1 alter table ma%asiswa Eodif; 0ulus int#1$ +enambah data pada tabel mahasiswa 5nsert 5nto >7ama Ta(el? #>3kspresi?$ *#7ama !ield$+ Ealues
Bontoh A +enambah data pada tabel mahasiswa, dengan nilai masing.masing field adalah *im G 7311322145, *ama G -indu #ata, 1lamat G Jl. 145
)erdagangan ?L21, Umur G 29, dan >ulus G 1 1nsert 1nto ma%asiswa values #WP;11;881FHX9 WNindu @ataX9 W l. <erdagangan E/'1X9 'R91$ +enambah data pada tabel mahasiswa, dengan nilai *im G 7311322145 dan *ama G -indu #ata 1nsert 1nto ma%asiswa (nim6 nama! values #WP;11;881FHX9 WNindu @ataX$ +engubah data pada tabel mahasiswa )pdate >7ama Ta(el? )et >7ama !ield,3kspresi? *N%ere >1efinisi?+ Bontoh A +engubah seluruh data pada tabel mahasiswa dengan nilai lulus G 2 )pdate ma%asiswa Set lulus,8 +engubah tabel mahasiswa dengan nilai namaG-indu #ata, ,:+ dan alamatGJl. )erdagangan ?L21, "intaro. Dimana *im yang di filter adalah 7311322145 )pdate ma%asiswa Set nama,WNindu @ata9 )I2MX9 alamat,W l. <erdagangan E/'19 /intaroX N%ere nim,WP;11;881FHX +enghapus data pada tabel mahasiswa ,elete !rom >7ama Ta(el? *w%ere >3kspresi?+ Bontoh A +enghapus seluruh data pada tabel mahasiswa De'e e 'rom mahasiswa +enghapus data pada tabel mahasiswa dimana *im yang difilter adalah 7311322145 De'e e 'rom mahasiswa -here *imG7311322145;
143
+emba!a data pada tabel mahasiswa )elect >*/7ama !ield? !rom >7ama Ta(el? >1efinisi?+ Bontoh A +emba!a data pada field *im, *ama dari tabel mahasiswa Se'e! *im, *ama Fr,. mahasiswa
*N%ere
+emba!a data pada field *im, *ama dari tabel mahasiswa dimana *im. nya adalah 7311322145 Se'e! *im, *ama Fr,. mahasiswa 9$ere *im G _7311322145\
+emba!a data pada keseluruhan field dari tabel mahasiswa Se'e! C fr,. mahasiswa
etelah mengenal sedikit mengenai database, kemudian kita akan mengenali database yang akan digunakan, yaitu +y @l. )enulis memilih database +y @l yang dijadikan !ontoh penggunaan, dikarenakan A Opensource Database, untuk penelitian dan pengembangan bukan untuk bisnis perusahaan, gratis, tetapi handal. +endukung perintah ^>, koneksi Java atau JD"B, dan koneksi :D"B +ulti : L)latform %UniC, -indows N +a!&, menyediakan instalasi di sistem operasi apapun. +ulti 6hread Database 25 8 J < D, dapat diaktifkan 25 jam dan < hari tanpa mati. 2#b T 96r, dapat menyimpan data dalam hitungan 6era"yte tergantung hardware dan system operasi. -2, Bomplian!e, tidak ada bug tahun 2222 +endukung (elasi Database, )ro!edure N 'un!tion %+y @l 5.2 atau +ys@l 6erbaru& ub^uery dan ?iew %+y @l 3.2 atau +y @l 6erbaru& User )rivileges, setiap pengguna mempunyai hak akses masing.masing. "anyak aplikasi "antu yang disediakan oleh pengembang lepas maupun dari mys@l.!om itu sendiri
14E
tring
Date
14<
,oneksi dari bahasa pemrograman Java ke database menggunakan konektor bernama JD"B. JD"B ini bukanlah singkatan, melainkan trade !ar# atau hak paten yang dikenalkan pada tahun 177< oleh perusahaan un +i!rosystem. JD"B ini dapat digunakan dengan koneksi t*o tier atau three tier. Hang dimaksud dengan t*o tier, yaitu program langsung mengakses ke database tanpa perantara lainnya %lihat #ambar 15.4&.
#ambar 15.4 JD"B.6wo 6ier sedangkan three tier adalah program dapat mengakses data melalui perantara atau !idle party atau third party %lihat #ambar 15.5&.
#ambar 15.5 JD"B.6hree 6ier Bara mendapatkan driver JD"B, dapat men.do*nload pada masing.masing *ebsite perusahaan yang membangun database yang kita gunakan atau buka *ebsite httpALLservlet.java.sun.!omLprodu!tsLjdb!Ldrivers
Untuk database +y @l, download file ./sK'L!,nne! ,rL6a7aLM7ersiNL2a8Bi1 dari website www.mys@l.!om. Dkstrak Iip tersebut, kemudian terdapat file ./sK'L!,nne! ,rL6a7aLM6arNL2aL &in86ar, pada file Iip, kemudian copy file mys@l.!onne!tor.java.UjarK.ga.bin.jar pada direktori yang sama denga program Java yang dibuat atau buatlah )168 yang diarahkan ke direktori mys@l.!onne!tor.java.UjarK.ga.bin.jar berada. 6ambahkan pada atas program import java.sUl.*. )ada java.s@l.F, banyak objek yang disediakan oleh bahasa pemrograman Java sebagai fasilitas untuk manipulasi data. Bara melakukan koneksi tidak boleh menggunakan import Unama driverK, melainkan seperti !ontoh program di bawah ini A trG" -lass.for4ame((com.m;sTl.jdbc.,river(!; -onnection -onn " ,riverEanager.get-onnection( (jdbcMm;sTlM&&Dnama3'omputerF&Dnama3databaseFU user"Dnama3userF Vpassword"D'odeF( !; Statement Stmt " -onn.createStatement(!; 9esultSet 9S " Stmt.executeWuer;( -)303CT * from >7ama6Ta(le?X !; )Gstem.out.println# XIoneksi /er%asil Bnda 0akukanX $; & catc% #3xception ieo$ " )Gstem.out.println#X3rrorX K ieo.to)tring#$$; & 6a7a8sK'8S a e.en :bjek yang digunakan untuk mengeksekusi perintah ^>. Dan menerima hasil dari eksekusi tersebut.
147
+engeksekusi seluruh perintah pada list bat!h dan jika semua perintah berhasil dijalankan akan memberikan nilai berupa integer dalam bentuk array.
Cesult)et executeWuer;#)tring sUl$
+engeksekusi perintah ^> dalam bentuk tunggal atau sin le ResultSet object.
Connection get-onnection#$
152
"erbentuk table dari hasil perintah yang dilakukan oleh java.s@l. tatement kepada database. (esult et ini mengatur cursor pointer pada baris data. Dapat menempatkan kursor sebelum baris, baris, dan akhir baris. :bjek memungkin pemuktahiran data, penambahan data dan penghapusan data pada tabel di database.
dengan
dengan
151
+endapatkan tipe data byte dengan bentuk array dengan parameter indeks kolom.
(Gte*+ get*;tes#)tring column7ame$
+endapatkan tipe data byte dalam bentuk array dengan parameter nama kolom.
Ceader get-#aracterStream#int column5ndex$
+endapatkan data berupa karakter dalam bentuk stream dengan parameter indeks kolom.
Ceader get-#aracterStream#)tring column7ame$
+endapatkan data berupa karaktater dalam bentuk stream dengan parameter nama kolom.
Clo( get-lob#int i$
152
154
+endapatkan nilai true jika posisi kursor sesudah akhir baris table
(oolean is*eforeFirst#$
+endapatkan nilai true jika posisi kursor sebelum awal baris table.
(oolean isFirst#$
+endapat nilai true jika posisi kursor pada awal baris table.
(oolean is+ast#$
+engubah 1s!ii stream dengan parameter indeks kolom, $nputstream dan panjangnya.
155
+engubah 1s!ii stream dengan parameter nama kolom, $nput tream dan panjan stream.
void update*ig,ecimal#int column5ndex9 /ig1ecimal x$
+engubah data dengan parameter indeks kolom dan nilai java.mat%./ig1ecimal value.
void update*ig,ecimal#)tring column7ame9 /ig1ecimal x$
+engubah "igDe!imal dengan parameter nama kolom dan nilai java.sUl./ig1ecimal value.
void update*inar;Stream#int column5ndex9 5nput)tream x9 int lengt%$
+engubah binary stream dengan parameter indeks kolom, $nput tream dan panjang stream.
void update*inar;Stream#)tring column7ame9 5nput)tream x9 int lengt%$
+engubah binary stream dengan nama kolom, $nput tream, dan panjang stream.
void update*lob#int column5ndex9 /lo( x$
+engubah ">:" dengan parameter nama kolom dan nilai java.sUl./lo( value.
void update*oolean#int column5ndex9 (oolean x$
+engubah !hara!ter stream dengan parameter indeks kolom, (eader, dan panjang stream.
void update-#aracterStream#)tring column7ame9 Ceader reader9 int lengt%$
153
+engubah !hara!ter stream dengan parameter nama kolom, reader dan panjang stream.
void update-lob#int column5ndex9 Clo( x$
+engubah nilai float dengan parameter nama kolom dan nilai float.
void update1nt#int column5ndex9 int x$
+engubah nilai integer dengan parameter indeks kolom dan nilai integer.
void update1nt#)tring column7ame9 int x$
15E
+emberikan nilai null dengan parameter nama kolom dengan parameter nama kolom.
void update9ow#$
+emberikan nilai true jika hasil @uery adalah null. Bara penggunaan method untuk memanipulasi data java.s@l.(esult et, adalah sebagai berikut A . )indah ke (e!ord berikutnya
C).next#$;
15<
+enambah data
9S.move2o1nsert9ow(!; 9S.updateString (-75M-9 -P;11;881FH-!; 9S.updateString (-7BMB-9 WNindu @ata-!; 9S.update1nt(-.M.C-9 'Q!; 9S.update1nt(-0.0.)-9 8!; 9S.insert9ow(!; 9S.move2o-urrent9ow(!;
+engubah data
9S.updateString (-7BMB-9 -Nindu @ata-!; 9S.updateString (-B0BMBT-9 - l.<erdagangan E/'1 /intaro-!; 9S.update1nt(-.M.C-9 'R!; 9S.update1nt(-0.0.)-9 1!; 9S.update9ow(!;
+enghapus data
9S.delete9ow(!;
+elihat data
S;stem.out.println( 9S.getString((41E(! N ( ( N 9S.getString((4AEA(! N ( ( N 9S.get1nt(()E)9(! N ( ( N 9S.get1nt((+)+)S(! !;
1pabila terdapat struktur tabel pada database mys@l dengan nama tabel mahasiswa seperti pada #ambar 15.E dan dengan tampilan program pada #ambar 15.<.
159
Bontoh )rogram A
//program ke duapulu% delapan //penggunaan data(ase import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.sUl.*; class frame'F extends !rame" private Container konten , new Container#$; private <anel panel1 , new <anel#$; private 0a(el l(l7im , new 0a(el#$; private Text!ield txt7im , new Text!ield#18$; private 0a(el l(l7ama , new 0a(el#$; private Text!ield txt7ama , new Text!ield#$; private 0a(el l(lBlamat , new 0a(el#$; private Text!ield txtBlamat , new Text!ield#$; private private private private private 0a(el l(l)ertifikat , new 0a(el#$; <anel panel' , new <anel#$; C%eck/ox c%)1 , new C%eck/ox#-)1-$; C%eck/ox c%)M< , new C%eck/ox#-)M<-$; C%eck/ox c%)MB , new C%eck/ox#-)MB-$;
private <anel panelF , new <anel#$; private 0a(el l(l urusan , new 0a(el#$; private /utton@roup grp urusan , new /utton@roup#$; private Cadio/utton rdT5 , new Cadio/utton#-T5-$; private Cadio/utton rdM5 , new Cadio/utton#-M5-$;
157
private private
Cadio/utton#-BI-$; Cadio/utton#-TI-$;
private 0a(el l(lIampus , new 0a(el#$; )tring sIampus*+ , " -Cempaka <uti%-9-Cileduk-9 -CoxG-9-)alem(a&; private Com(o/ox cm(Iampus , new Com(o/ox# sIampus $; private private private private private private private private private private private <anel panelH , new <anel#$; /utton (tn!irst , new /utton#-=>>-$; /utton (tn<rev , new /utton#->>-$; /utton (tn7ext , new /utton#-??-$; /utton (tn0ast , new /utton#-??=-$; <anel panel; , new <anel#$; /utton (tnBdd , new /utton#-Tam(a%-$; /utton (tn)ave , new /utton#-)impan-$; /utton (tn!ilter , new /utton#-!ilter-$; /utton (tn1elete , new /utton#-Dapus-$; /utton (tn3xit , new /utton#-Ieluar-$;
)tring d(.rl , -jd(cJmGsUlJ//local%ost/ma%asiswaZ user,root[password,-; private )tatement st; Cesult)et C); frame'F#$" super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; t%is.set0ocation#189188$; t%is.set)i:e#H;89F88$; konten,getContent<ane#$; konten.set0aGout#new !low0aGout# !low0aGout.C37T3C $ $; l(l7im.setText#-75M-$; l(l7ama.setText#-7BMB-$; l(lBlamat.setText#-B0BMBT-$; l(l)ertifikat.setText#-)ertifikat-$; l(l urusan.setText#- urusan-$; l(lIampus.setText#-Iampus-$; panel1.set0aGout#new @rid0aGout#Q9'$$; panel1.add#l(l7im$; panel1.add#txt7im$; panel1.add#l(l7ama$; panel1.add#txt7ama$; panel1.add#l(lBlamat$; panel1.add#txtBlamat$;
132
panel1.add#l(l)ertifikat$; panel'.set0aGout#new @rid0aGout#19F$$; panel'.add#c%)1$; panel'.add#c%)M<$; panel'.add#c%)MB$; panel1.add#panel'$; grp urusan.add#rdT5$; grp urusan.add#rdM5$; grp urusan.add#rdBI$; grp urusan.add#rdTI$; panelF.set0aGout#new @rid0aGout#19H$$; panelF.add#rdT5$; panelF.add#rdM5$; panelF.add#rdBI$; panelF.add#rdTI$; panel1.add#l(l urusan$; panel1.add#panelF$; cm(Iampus.set)elected5ndex#1$; cm(Iampus.setMaximumCowCount#F$; panel1.add#l(lIampus$; panel1.add#cm(Iampus$; panelH.set0aGout#new @rid0aGout#19H$$; panelH.add#(tn!irst$; panelH.add#(tn<rev$; panelH.add#(tn7ext$; panelH.add#(tn0ast$; panel;.set0aGout#new @rid0aGout#19;$$; panel;.add#(tnBdd$; panel;.add#(tn)ave$; panel;.add#(tn!ilter$; panel;.add#(tn1elete$; panel;.add#(tn3xit$; itemDandler itemDandler , new itemDandler#$; (tn!irst.addBction0istener#itemDandler$; (tn<rev.addBction0istener#itemDandler$; (tn7ext.addBction0istener#itemDandler$; (tn0ast.addBction0istener#itemDandler$; (tnBdd.addBction0istener#itemDandler$; (tn)ave.addBction0istener#itemDandler$; (tn!ilter.addBction0istener#itemDandler$; (tn1elete.addBction0istener#itemDandler$; (tn3xit.addBction0istener#itemDandler$; konten.add#panel1$; konten.add#panelH$; konten.add#panel;$; ConnectTo1ata(ase#$; ConnectToTa(le#--$;
131
&
setEisi(le#true$;
private class itemDandler implements Bction0istener" pu(lic void action<erformed#Bction3vent e$" 2(ject o(j,e.get)ource#$; if #o(j ,, (tn!irst$ rec!irst#$; if #o(j ,, (tn<rev$ rec<rev#$; if #o(j ,, (tn7ext$ rec7ext#$; if #o(j ,, (tn0ast$ rec0ast#$; if #o(j ,, (tnBdd$ recBdd#$; if #o(j ,, (tn)ave$ rec)ave#$; if #o(j ,, (tn!ilter$ rec!ilter#$; if #o(j ,, (tn1elete$ rec1elete#$; if #o(j ,, (tn3xit$ )Gstem.exit#8$; & & private void rec!ilter#$" if #(tn!ilter.getText#$ ,, -!ilter-$" )tring inputEalue , 2ption<ane.s%ow5nput1ialog# -Masukkan 75M J $; if #inputEalue T, --$" (oolean (Connect , ConnectToTa(le#inputEalue$; if #(Connect ,, true$" (tn!ilter.setText#-.n!ilter-$; &else" ConnectToTa(le#--$; & & & else " ConnectToTa(le#--$; (tn!ilter.setText#-!ilter-$; & & private void recCefres%#$" trG" & catc% #3xception e$" )Gstem.out.println#e.to)tring#$$; & & private void rec1elete#$" int iYuest , 2ption<ane.s%owConfirm1ialog#null9 -Bnda 5ngin Meng%apus K txt7im.getText#$ K - Z-9 -1elete-9 2ption<ane.M3)67262<T527 $; if #iYuest ,, 8$" trG " C).deleteCow#$; if #(tn!ilter.getText#$ ,, -.n!ilter-$" rec!ilter#$; &
132
private void rec)ave#$" trG " if #(tnBdd.getText#$ ,, -Tam(a%-$" rec.pdate#$; C).updateCow#$; & else " C).moveTo5nsertCow#$; rec.pdate#$; C).insertCow#$; (tnBdd.setText#-Tam(a%-$; (tn!ilter.set3na(led#true$; (tn1elete.set3na(led#true$; rec0ast#$; & & catc% #3xception e$" )Gstem.out.println#e.to)tring#$$; &
&
private void rec.pdate#$" trG " C).update)tring#-75M-9 txt7im.getText#$$; C).update)tring#-7BMB-9 txt7ama.getText#$$; C).update)tring#-B0BMBT-9 txtBlamat.getText#$ $; if #c%)1.is)elected#$$ " C).update5nt#-)1-91$; & else " C).update5nt#-)1-98$; & if #c%)M<.is)elected#$$" C).update5nt#-)M<-91$; & else " C).update5nt#-)M<-98$; & if #c%)MB.is)elected#$$ " C).update5nt#-)MB-91$; & else " C).update5nt#-)MB-98$; & if #rdT5.is)elected#$$ " C).update5nt#- .C.)B7-98$; & else if #rdM5.is)elected#$$" C).update5nt#- .C.)B7-91$; & else if #rdBI.is)elected#$$" C).update5nt#- .C.)B7-9'$; & else if #rdTI.is)elected#$$"
134
&
C).update5nt#- .C.)B7-9F$;
C).update5nt#-IBM<.)-9 cm(Iampus.get)elected5ndex#$ $; & catc% #3xception e$" )Gstem.out.println#e.to)tring#$$; & & private void recBdd#$" if #(tnBdd.getText#$ ,, -Tam(a%-$ " (tnBdd.setText#-/atal-$; (tn!ilter.set3na(led#false$; (tn1elete.set3na(led#false$; kosong#$; &else " (tnBdd.setText#-Tam(a%-$; (tn!ilter.set3na(led#true$; (tn1elete.set3na(led#true$; preview#$; & & private void rec!irst#$" trG " C).first#$; preview#$; & catc%#3xception e$" )Gstem.out.println#e.to)tring#$$; & & private void rec<rev#$" trG " if #C).is!irst#$ ,, false$" C).previous#$; preview#$; & &catc% #3xception e$" )Gstem.out.println#e.to)tring#$$; & & private void rec7ext#$" trG " if #C).is0ast#$ ,, false$" C).next#$; preview#$; & &catc% #3xception e$" )Gstem.out.println#e.to)tring#$$; & &
135
private void rec0ast#$ " trG " C).last#$; preview#$; &catc% #3xception e$ " )Gstem.out.println#e.to)tring#$$; & & private void preview#$" trG " kosong#$; txt7im.setText#C).get)tring#-75M-$$; txt7ama.setText#C).get)tring#-7BMB-$$; txtBlamat.setText#C).get)tring#-B0BMBT-$$; if #C).get5nt#-)1-$ ,, 1$" c%)1.set)elected#true$; & else " c%)1.set)elected#false$; & if #C).get5nt#-)M<-$ ,, 1$" c%)M<.set)elected#true$; & else " c%)M<.set)elected#false$; & if #C).get5nt#-)MB-$ ,, 1$ " c%)MB.set)elected#true$; & else " c%)MB.set)elected#false$; & switc%#C).get5nt#- .C.)B7-$$" case #8$ J rdT5.set)elected#true$; (reak; case #1$ J rdM5.set)elected#true$; (reak; case #'$ J rdBI.set)elected#true$; (reak; case #F$ J rdTI.set)elected#true$; (reak; & cm(Iampus.set)elected5ndex# C).get5nt#-IBM<.)-$ $; & catc% #3xception e$ " )Gstem.out.println#e.to)tring#$$; &
&
133
private void kosong#$" txt7im.setText#--$; txt7ama.setText#--$; txtBlamat.setText#--$; c%)1.set)elected#false$; c%)M<.set)elected#false$; c%)MB.set)elected#false$; rdT5.set)elected#false$; rdM5.set)elected#false$; rdBI.set)elected#false$; rdTI.set)elected#false$; cm(Iampus.set)elected5ndex#8$; & private void ConnectTo1ata(ase#$" trG " Class.for7ame#-com.mGsUl.jd(c.1river-$; Connection Conn , 1riverManager.getConnection# d(.rl $; st , Conn.create)tatement# Cesult)et.TM<36)CC200657)37)5T5E39 Cesult)et.C27C.C6.<1BTB/03 $; & catc% #3xception e$ " 2ption<ane.s%owMessage1ialog #null9 -Tidak 1apat 1eteksi MM)Y0. 1/C-9 - 1/C-9 2ption<ane.<0B576M3))B@3 $; )Gstem.exit#8$; & & private (oolean ConnectToTa(le#)tring s!ilter$" (oolean (Connect , false; trG " )tring sYuerG; sYuerG , -)303CT * from ma%asiswa-; if #s!ilter T,--$" sYuerG , sYuerG K - N%ere 7im,S- K s!ilter K -S -; & trG " C).close#$; & catc% #3xception ei$ "& C) , st.executeYuerG#sYuerG$; if #C).next#$$ " rec!irst#$; (Connect , true; &else " 2ption<ane.s%owMessage1ialog
13E
&
& catc% #3xception e$ " 2ption<ane.s%owMessage1ialog #null9 -Ioneksi Ta(el /ermasala%-9 -Ioneksi Ta(el-9 2ption<ane.<0B576M3))B@3 $; )Gstem.exit#8$; & return (Connect;
13<
BAB XV MEMBUAT LAPORAN DENGAN JFREEREPORT J'ree(eport merupakan Java library dari httpALLwww.jfree.org yang dipimpin oleh 6homas +orgner. Bara kerja J'ree(eport adalah memba!a data dari 6able+odel dan menampilkannya dalam bentuk laporan %report&. 'asilitas yang disediakan adalah penggunaan judul %header&, nomor halaman, penjumlahan se!ara grup % rup total&, rata.rata, gambar dan lain.lain. >aporan dapat terlihat pada layer ataupun disimpan dengan format 1!robat )D', DC!el, 86+>, J+> ataupun teCt format. J'ree(eport berkejasama dengan )entaho.)roje!t pada tanggal 1< Januari 222E. 6homas +orgner juga menjabat sebagai Chie" +rchitect o" (eportin &olutions, 0ibrari J'ree(eport dapat diunduh pada httpALLwww.jfree.org, sedangkan pentaho dapat diunduh pada httpALLwww.pentaho.org. +ulailah dengan membuat laporan aplikasi dengan mengikuti langkah.langkah di bawah ini A 1. Extract jfreereport.2.9.E.E.Iip pada direktori yang ditentukan, !ontoh A !AV; 2. ,etiklah dan simpan program koneksiDatabase.java
//koneksi1ata(ase.java package testing; import java.sUl.*; import javax.swing.*; pu(lic class koneksi1ata(ase" )tring sdriver9 sd(url9 susername9spassword9sUuerGdata; Connection conn , null; )tatement st,null; Cesult)et rs,null; pu(lic koneksi1ata(ase# )tring driver9 )tring d(url9 )tring username9 )tring password9 )tring UuerGdata$" sdriver , driver; sd(url , d(url; susername , username; spassword , password; sUuerGdata, UuerGdata; & pu(lic Connection openIoneksi#$t%rows )Y03xception" )Gstem.out.println#sdriver$; trG" Class.for7ame#sdriver$; conn , 1riverManager.getConnection#sd(url$; return conn;
139
& catc%#3xception e$" 2ption<ane.s%owMessage1ialog# null9 -Ioneksi ke data(ase gagal T-9-<esan-9 2ption<ane.3CC2C6M3))B@3 $; & & pu(lic Cesult)et getCesult#$ t%rows )Y03xception " trG" openIoneksi#$; st,conn.create)tatement# Cesult)et.TM<36)CC2006)37)5T5E39 Cesult)et.C27C.C6.<1BTB/03$; rs,st.executeYuerG#sUuerGdata$; return null;
& catc%#3xception ee$" ee.print)tackTrace#$; return null; & & & return rs;
4. $dentifikasikan semua library J'ree(eport %!AV jfreereport.2.9.E.E;& pada program java 5. Extract pentaho.report.design.wiIard.2.7.2.Iip pada direktori yang diinginkan, !ontoh A !AV; 3. Copy mys@l.!onne!tor.java.4.2.13.ga.bin.jar ke direktori !AVpentaho.report. design.wiIard.2.7.2VlibVjdb!V E. Jalankan !AV pentaho.report.design.wiIard.2.7.2VreportwiIard.bat hingga keluar layar seperti dibawah ini
<. 6ambahkan J*D$ Connection Type dengan menekan tombol +dd, kemudian isilah semua parameter yang ada. ,emudian tekan tombol Test untuk melakukan pengetesan dan tekan O- apabila sudah bisa koneksi.
#ambar 13.2 J*D$ Connection 9. )ilihlah J*D$ !ontoh A testing, kemudian isilah teks 5uery dengan berikut A select nim9nama9alamat9 trim#concat# #case w%en sd,1 t%en S)1 S else S S 9#case w%en smp,1 t%en S)M< S else S 9#case w%en sma,1 t%en S)MB S else S $$ sertifikat9 #case w%en jurusan , 8 t%en ST5S w%en jurusan , 1 t%en SM5S w%en jurusan , ' t%en SBIS w%en jurusan , F t%en STIS end$ jurusan9 #case w%en kampus , 8 t%en SCempaka MasS w%en kampus , 1 t%en SCiledukS w%en kampus , ' t%en SCoxGS w%en kampus , F t%en S)alem(aS end$ kampus from ma%asiswa teks sebagai
1E2
7. 6ahap ke dua tekan tombol 1ext hingga mun!ul layar tampilan seperti dibawah ini
#ambar 13.4 >angkah ke dua pembuatan laporan dengan )entaho 12. 6ahap ke tiga tekan tombol next hingga mun!ul layar seperti dibawah ini
1E1
11. 6ahap ke empat tekan tombol 1ext, hingga mun!ul layar tampilan sebagai berikut
#ambar 13.3 6ahap ,e Dmpat )embuatan >aporan +enggunakan )entaho 12. 6ekan tombol 'inish, hingga mun!ul hasil akhir dari laporan
#ambar 13.E Bontoh >aporan 1!robat (eader Dari )entaho 14. 6utup layar 1!robat (eader, kemudian pilihlah menu 'ile DCport 6o >o!ation, simpanlah ditempat yang sama dengan program utama.
1E2
import javax.swing.table.,efault2ableEodel; import javax.swing.table.2ableEodel; import import import import import import import import org.jfree.report./lementAlignment; org.jfree.report.JFree9eport; org.jfree.report.JFree9eport*oot; org.jfree.report.modules.parser.base.9eport:enerator; org.jfree.report.elementfactor;.2extField/lementFactor;; org.jfree.report.modules.gui.base.Jreview,ialog; org.jfree.ui.Float,imension; org.jfree.report.modules.misc.tablemodel.9esultSet2ableEodelFactor;;
pu(lic class printCeport" private static 9esultSetEeta,ata rsd " null; public static 9esultSet rs " null; private ,efault2ableEodel rsult; 'one'si,atabase ',b; private 2(ject*+ column7ames; private int count,8; private 2ableEodel datars; private )9+ url0E+; pu(lic pu(lic pu(lic pu(lic pu(lic pu(lic )tring )tring )tring )tring )tring )tring d(url , -jd(cJmGsUlJ//local%ost/m%sZ-; username , -root-; password , --; file4M0 , -ma%asiswa.xml-; jd(c1river , -com.mGsUl.jd(c.1river-; UuerGdata , -select * from ma%asiswa-;
protected static class CloseDandler extends NindowBdapter " pu(lic void windowClosing#final Nindow3vent event$ " & &
1E4
pu(lic printCeport#$ "& pu(lic void executereport#$ " !reeCeport/oot.get5nstance#$.start#$; k1( , new koneksi1ata(ase# jd(c1river9 d(url9 username9 password9 UuerGdata $; if #rs ,, null$ " trG " rs , k1(.getCesult#$; & catc% #3xception e$ " & &
final Ta(leModel data , create1ata#$; final !reeCeport report , createCeport1efinition#$; trG " report.set1ata#data$; & catc%#3xception ex$ " ex.print)tackTrace#$; & trG " final <review1ialog preview,new <review1ialog#report$; preview.addNindow0istener#new CloseDandler#$$; preview.pack#$; preview.setEisi(le#true$; rs.close#$; rs,null; & catc%#3xception eex$ " eex.print)tackTrace#$; & & private Ta(leModel create1ata#$ " rsult , null; trG " rsd , rs.getMeta1ata#$; count , rsd.getColumnCount#$; column7ames , new 2(ject*countK1+; for#int i , 1;i >, count; iKK$ " column7ames*iO1+ , rsd.getColumn7ame#i$;
1E5
&
//)Gstem.out.println#column7ames*iO1+$;
int rowCount,8; int mGCounter , 8; w%ile #rs.next#$$ mGCounterKK; rs.first#$; rsult,new 1efaultTa(leModel#column7ames9mGCounter K 1$; int row,8; do" rowKK; for#int j,1;j>,count;jKK$ " rsult.setEalueBt#rs.get2(ject#j$9row9jO1$; //)Gstem.out.println#rs.get2(ject#j$$; & &w%ile#rs.next#$$; & catc%#3xception exe$ " exe.print)tackTrace#$; & return rsult; & private !reeCeport createCeport1efinition#$ " !reeCeport report , new !reeCeport#$; trG " )9+ url0E+ " get-lass(!.get9esource(file0E+!; report " 9eport:enerator.get1nstance(!.parse9eport(url0E+!; report.set4ame((Easter(!; &catc%#3xception ee$ " ee.print)tackTrace#$; & return report; & pu(lic static void main #final )tring*+ args$ " print9eport rpt " new print9eport(!; rpt.Tuer;data " (select nim6nama6alamat6 ( N ( trim(concat( ( N ( (case ( N ( w#en sd " 1 t#en XS, X (
1E3
N N N N N N N N N N N N N N N N N N N N N N N N N N N
( else X X ( ( end ( ( !6 ( ( (case ( ( w#en smp " 1 t#en XSEJ X ( ( else X X ( ( end ( ( !6 ( ( (case ( ( w#en sma " 1 t#en XSEA X ( ( else X X ( ( end ( ( ! ( ( !! sertifi'at6 ( ((case ( ( w#en jurusan " 5 t#en X21X ( ( w#en jurusan " 1 t#en XE1X ( ( w#en jurusan " % t#en XAKX ( ( w#en jurusan " 8 t#en X2KX ( ( end! jurusan6 ( ( (case ( ( w#en 'ampus " 5 t#en X-empa'a EasX ( ( w#en 'ampus " 1 t#en X-iledu'X ( ( w#en 'ampus " % t#en X9ox;X ( ( w#en 'ampus " 8 t#en XSalembaX ( ( end! 'ampus ( ( from ma#asiswa( ;
rpt.executereport(!; $ &
1EE
13. Jalankan program, dan apabila telah tampil gambar seperti dibawah ini maka program laporan selesai dibuat
1E<
BAB XVI
1E9
class grap11 extends !rame " private Container konten,new Container#$; private grap1 (endera,new grap1#$; grap11#$ " super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; t%is.set0ocation#1889188$; t%is.set)i:e#F889';8$; konten,getContent<ane#$; konten.add#(endera$; & s%ow#$;
&
1E7
*im A 7311322145
private J2extField txt4im " new J2extField( (B<11<5518>(615 !;
Btau
txt4im.set2ext((B<11<5518>(!;
D A Bhe!ked
private J-#ec'*ox c#S, " new J-#ec'*ox((S,(6true!;
atau
c#S,.setSelected(true!;
+1 A Bhe!ked
private J-#ec'*ox c#SEA " new J-#ec'*ox((SEA(6true!;
atau
c#SEA.setSelected(true!;
Jurusan 6$ A Bhe!ked
1<2
Btau
rd21.setSelected(true!;
class frame'Ficon extends !rame " //deklarasi o(jek private Container konten , new Container#$; private <anel panel1 , new <anel#$; private 0a(el l(l7im , new 0a(el#$; private J2extField txt4im " new J2extField( (B<11<5518>(615 !; private 0a(el l(l7ama , new 0a(el#$; private J2extField txt4ama " new J2extField( (@indu :ata(6 %5 !; private 0a(el l(l)ertifikat , new 0a(el#$; private <anel panel' , new <anel#$; private J-#ec'*ox c#S, " new J-#ec'*ox((S,(6true!; private J-#ec'*ox c#SEJ " new J-#ec'*ox((SEJ(6 true!; private J-#ec'*ox c#SEA " new J-#ec'*ox((SEA(6true!; private <anel panelF , new <anel#$;
1<1
private 0a(el l(l urusan , new 0a(el#$; private /utton@roup grp urusan , new /utton@roup#$; private J9adio*utton rd21 " new J9adio*utton( (21(6 true !; private Cadio/utton rdM5 , new Cadio/utton#-M5-$; private Cadio/utton rdBI , new Cadio/utton#-BI-$; private Cadio/utton rdTI , new Cadio/utton#-TI-$; private 0a(el l(lIampus , new 0a(el#$; )tring sIampus*+ , " -Cempaka <uti%-9-Cileduk-9 -CoxG-9-)alem(a&; private Com(o/ox cm(Iampus , new Com(o/ox#sIampus$; private private /utton cmd)ave , new /utton#-Tampilkan-$; /utton cmd3nd , new /utton#-)elesai-$;
frame'Ficon#$ " super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; t#is.set1con1mage( 2ool'it.get,efault2ool'it(!.get1mage( (computer.jpg( ! !; t%is.set0ocation#189188$; t%is.set)i:e#;889';8$; konten,getContent<ane#$; konten.set0aGout#new !low0aGout# !low0aGout.C37T3C $ $; l(l7im.setText#-75M-$; l(l7ama.setText#-7BMB-$; l(l)ertifikat.setText#-)ertifikat-$; l(l urusan.setText#- urusan-$; l(lIampus.setText#-Iampus-$; panel1.set0aGout#new @rid0aGout#69'$$; panel1.add#l(l7im$; panel1.add#txt7im$; panel1.add#l(l7ama$; panel1.add#txt7ama$; panel1.add#l(l)ertifikat$; panel'.set0aGout#new @rid0aGout#19F$$; panel'.add#c%)1$; panel'.add#c%)M<$; panel'.add#c%)MB$; panel1.add#panel'$;
1<2
panelF.set0aGout#new @rid0aGout#19H$$; panelF.add#rdT5$; panelF.add#rdM5$; panelF.add#rdBI$; panelF.add#rdTI$; panel1.add#l(l urusan$; panel1.add#panelF$; cm(Iampus.set)elected5ndex#1$; cm(Iampus.setMaximumCowCount#F$; panel1.add#l(lIampus$; panel1.add#cm(Iampus$; itemDandler itemDandler , new itemDandler#$; panel1.add#cmd)ave$; cmd)ave.addBction0istener#itemDandler$; cmdSave.setEnemonic(XJX!; cmdSave.set1con(new 1mage1con((preview.jpg(!!; panel1.add#cmd3nd$; cmd3nd.addBction0istener#itemDandler$; cmd/nd.setEnemonic(XSX!; cmd/nd.set1con(new 1mage1con((exit.jpg(!!; konten.add#panel1$; s%ow#$; & private class itemDandler implements Bction0istener "pu(lic void action<erformed#Bction3vent e$ "2(ject o(j,e.get)ource#$; if#o(j,,cmd)ave$ " )tring sTampil; sTampil , -75M J - K txt7im.getText#$; sTampilK, -Ln7ama J - K txt7ama.getText#$; sTampilK, -Ln)ertifikat-; if #c%)1.is)elected#$$ sTampilK, -9 )1-; if #c%)M<.is)elected#$$ sTampilK, -9 )M<-; if #c%)MB.is)elected#$$ sTampilK, -9 )MB-; sTampilK, -Ln urusan-; if #rdT5.is)elected#$$ sTampilK, -9 T5-; else if#rdM5.is)elected#$$ sTampilK,-9M5-; else if#rdBI.is)elected#$$ sTampilK,-9BI-; else if#rdTI.is)elected#$$ sTampilK,-9TI-; else sTampilK,-9 7gak elas-;
1<4
sTampilK,-LnIampus9-; sTampilK,cm(Iampus.get5temBt# cm(Iampus.get)elected5ndex#$ $; 2ption<ane.s%owMessage1ialog# null9 sTampil 9 -DB)50-9 2ption<ane.57!2CMBT5276M3))B@3 $; & else ")Gstem.exit #8$;&
& &
pu(lic static void main#)tring args*+$ " new frame'Ficon#$; & &
1<5
Ja0a&an La i$an :
1<3
//desain panel '9 tom(ol 72 panel6'.set0aGout#new @rid0aGout#$$; panel6'.add#new <anel#$9 /order0aGout.C37T3C$; panel6'.add#new /utton#-7o-$9/order0aGout.3B)T$; //desain panel6F9 pana% atas9 (awa%9 kanan9 kiri panel6F.set0aGout #new @rid0aGout #F9F$$; panel6F.add #new <anel#$$; panel6F.add #new /utton#-\-$$; panel6F.add #new <anel#$$; panel6F.add #new /utton#->-$$; panel6F.add #new <anel#$$; panel6F.add #new /utton#-?-$$; panel6F.add #new <anel#$$; panel6F.add #new /utton#-v-$$; //panel H9 formasi (order atas panel6H.set0aGout#new /order0aGout#$$; panel6H.add#panel619 /order0aGout.N3)T$; panel6H.add#panel6'9 /order0aGout.3B)T$; panel6H.add#panel6F9 /order0aGout.C37T3C$; //desain panel6;9 tom(ol angka panel6;.set0aGout#new @rid0aGout#H9F$$; for #int i,1; i>,P; iKK$ panel6;.add#new /utton#5nteger.to)tring#i$$$; panel6;.add#new /utton#-*-$$; panel6;.add#new /utton#-8-$$; panel6;.add#new /utton#-]-$$; //desain panel66 panel66.set0aGout#new /order0aGout#$$; panel66.add#panel6H9 /order0aGout.72CTD$; panel66.add#panel6;9 /order0aGout.C37T3C$; //desain panel6Q panel6Q.set0aGout #new /order0aGout#$$; panel6Q.add#new <anel#$9 /order0aGout.72CTD$; panel6Q.add#new <anel#$9 /order0aGout.N3)T$; panel6Q.add#new <anel#$9 /order0aGout.3B)T$; panel6Q.add#new Text!ield#-8R1RRQ886P-$9 /order0aGout.C37T3C $; panel6Q.add#new <anel#$9 /order0aGout.)2.TD$;
//1esain !rame konten , getContent<ane#$; konten.set0aGout #new /order0aGout#$$; konten.add#panel669 /order0aGout.)2.TD$; konten.add#panel6Q9 /order0aGout.C37T3C$; s%ow#$; & &
1<E
//class .tama pu(lic class praktekH1 " pu(lic static void main#)tring args*+$ " new frameH1#$; & &
class frameH' extends !rame " private Container konten , new Container#$; private <anel panel1 , new <anel#$; private 0a(el l(lIeterangan , new 0a(el# -Ionversi 1erajat$; private <anel panel' , new <anel#$; private Text!ield txt)ource , new Text!ield#;$; )tring pil*+ , "-Celcius-9 -!a%ren%eit-9 -Ielvin-&; private Com(o/ox cm()ource , new Com(o/ox#pil$; private 0a(el l(lIonversi , new 0a(el# -Ionversi Ie$;
1<<
Com(o/ox cm(Target , new Com(o/ox#pil$; /utton (utton1 , new /utton#-Ionversi-$; 0a(el l(lDasil , new 0a(el#$; <anel panelF , new <anel panelH , new <anel#$; <anel#$;
frameH'#$ " super #-.75E3C)5TB) /.15 0.D.C-$; set1efaultClose2peration# !rame.345T6276C02)3 set)i:e#;889188$; set0ocation#F889188$; itemDandler itemDandler , new itemDandler#$; panel1.set0aGout#new /order0aGout#$$; panel1.add#l(lIeterangan$; panel'.set0aGout#new @rid0aGout#19;$$; panel'.add#txt)ource$; panel'.add#cm()ource$; panel'.add#l(lIonversi$; panel'.add#cm(Target$; panel'.add#(utton1$; (utton1.addBction0istener#itemDandler$; panelF.set0aGout#new /order0aGout#$$; panelF.add#panel19 /order0aGout.72CTD$; panelF.add#panel'9 /order0aGout.)2.TD$; panelH.set0aGout#new /order0aGout#$$; panelH.add#panelF9 /order0aGout.72CTD$; panelH.add#l(lDasil9 /order0aGout.)2.TD$; konten , getContent<ane#$; konten.add#panelH$; & s%ow#$;
$;
private class itemDandler implements Bction0istener "pu(lic void action<erformed#Bction3vent e$ "2(ject o(j,e.get)ource#$; if#o(j,,(utton1$ " int i)ource; int iTarget; dou(le dDasil; )tring sDasil; i)ource , cm()ource.get)elected5ndex#$; iTarget , cm(Target.get)elected5ndex#$;
1<9
dDasil , 1ou(le.parse1ou(le# txt)ource.getText#$ $; if#i)ourceT,iTarget$ " if #i)ource ,, 8 [[ iTarget,,1$ dDasil , #dDasil*1.R$ K F'; if #i)ource ,, 8 [[ iTarget,,'$ dDasil , dDasil K 'QF.1;; if #i)ource ,, 1 [[ iTarget,,8$ dDasil , #dDasil O F'$ * 8.;;;;; if #i)ource ,, 1 [[ iTarget,,'$ dDasil , ##dDasilOF'$*8.;;;;$ K'QF.1;; if #i)ource ,, ' [[ iTarget,,8$ dDasil , dDasilO'QF.1;; if #i)ource ,, ' [[ iTarget,,1$ dDasil , ##dDasilO'QF.1;$*1.R$KF'; & l(lDasil.setText#-DB)50 - K dDasil$; & & & //class utama pu(lic class praktekH' " pu(lic static void main#)tring args*+$ " new frameH'#$; & & &
1<7
pu(lic class <ear extends !rame implements Eouse+istener" 3llipse'1.1ou(le circle9 oval9 leaf9 stem; Brea circ9 ov9 leaf19 leaf'9 st19 st'; int w9%; dou(le ew9e%;
192
pu(lic <ear#$ " set)i:e#new 1imension#H889F88$$; set1efaultClose2peration# !rame.345T6276C02)3$; circle , new 3llipse'1.1ou(le#$; oval , new 3llipse'1.1ou(le#$; leaf , new 3llipse'1.1ou(le#$; stem , new 3llipse'1.1ou(le#$; circ , new Brea#circle$; ov , new Brea#oval$; leaf1 , new Brea#leaf$; leaf' , new Brea#leaf$; st1 , new Brea#stem$; st' , new Brea#stem$; /*mendapatkan posisi awal 1imension d , get)i:e#$; w , d.widt%; % , d.%eig%t; !rame*/
/*@am(ar 1itempatkan di Tenga%*/ ew , w/'; e% , %/'; set/ackground#Color.w%ite$; & pu(lic void paint #@rap%ics g$ " @rap%ics'1 g' , #@rap%ics'1$ g;
/*Menggam(ar daun dengan model intersection *dari ' o(ject elipse */ g'.setColor#Color.green$; leaf.set!rame#ewO169 e%O'P9 1;.89 1;.8$; leaf1 , new Brea#leaf$; leaf.set!rame#ewO1H9 e%OHQ9 F8.89 F8.8$; leaf' , new Brea#leaf$; leaf1.intersect#leaf'$; g'.fill#leaf1$; /* *Menggam(ar 1aun ke ' */ leaf.set!rame#ewK19 e%O'P9 1;.89 1;.8$; leaf1 , new Brea#leaf$; leaf'.intersect#leaf1$; g'.fill#leaf'$; g'.setColor#Color.(lack$; /* *Menggam(ar dengan model su(stract *dari ' o(jek elipse */
191
stem.set!rame#ew9 e%OH'9 H8.89 H8.8$; st1 , new Brea#stem$; stem.set!rame#ewKF9 e%OHQ9 ;8.89 ;8.8$; st' , new Brea#stem$; st1.su(tract#st'$; g'.fill#st1$; g'.setColor#Color.Gellow$; /*penggam(aran (ua% <ear *dengan sistem pengga(aungan ' o(jek *elipse Gang (er(eda */ circle.set!rame#ewO';9 e%9 ;8.89 ;8.8$; oval.set!rame#ewO1P9 e%O'89 H8.89 Q8.8$; circ , new Brea#circle$; ov , new Brea#oval$; circ.add#ov$; g'.fill#circ$; //untuk menampilkan text 4 [ M pada laGar g'.setColor#Color.(lue$; g'.set!ont#new !ont#-Ta%oma-9!ont.5TB05C918$$; g'.draw)tring# ew K -9 - K e%9 #int$ ew K 189 #int$ e% $;
&
//Mouse 0istener pu(lic void mouseCeleased#Mouse3vent e$ " &Qposisi gambar disesuai'an dengan Q0 V ? mouse Q& ew " e.get0(!; e# " e.get?(!; repaint(!; S;stem.out.println((Eouse 9eleased(!; & pu(lic void mouse<ressed#Mouse3vent e$"& pu(lic void mouse3xited#Mouse3vent e$"& pu(lic void mouse3ntered#Mouse3vent e$"& pu(lic void mouseClicked#Mouse3vent e$"& pu(lic static void main#)tring s*+$ " <ear p , new <ear#$; p.addEouse+istener(p!; p.setEisi(le#true$; & &
192
lblBm sldBm
lblBmBapt
lbl$n!h lbl$n!hBapt s l d $ n ! h
lbl'eet lbl'eetBapt
l d ' e e t
Rumus $n!h G %Bentimeter& F 2.474<2 'eet G %Bentimeter& F 2.24921 Bentimeter G %$n!h& F 2.35 'ett G %$n!h& F 2.944 Bentimeter G %'eet& F 42.59 $n!h G %'eet& F 12
import import import import javax.swing.*; javax.swing.event.*; java.awt.*; java.awt.event.*;
class frame;F extends !rame " //penggunaan slider // )lider #posisi >8O%orisontal=1Overtical?9min9max98$ private Container konten , new Container#$; private <anel panel1 , new <anel#$; private <anel panel' , new <anel#$;
194
private private private private private private private private private private private private private
0a(el l(lCm , new 0a(el#$; 0a(el l(lCmCapt , new 0a(el#$; )lider sldCm , new )lider#$; <anel 0a(el 0a(el 0a(el 0a(el panelF , new <anel#$; l(l5nc% , new 0a(el#$; l(l5nc%Capt , new 0a(el#$; l(l!eet , new 0a(el#$; l(l!eetCapt , new 0a(el#$;
<anel panelH , new <anel#$; )lider sld5nc% , new )lider#1989'8898$; )lider sld!eet , new )lider#1989'8898$; <anel panel; , new <anel panel6 , new <anel#$; <anel#$;
frame;F#$ " super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; set)i:e#'889F';$; set0ocation#189188$; konten , getContent<ane#$; l(lCm.setText#-Cm-$; l(lCmCapt.setText#-8 1erajat-$; panel1.set0aGout# new !low0aGout# !low0aGout.C37T3C $ panel1.add#l(lCm$; panel1.add#l(lCmCapt$; panel'.set0aGout#new /order0aGout#$$; panel'.add#panel19 /order0aGout.72CTD$; sldCm.setEalue#8$; sldCm.setMaximum#18888$; panel'.add#sldCm9 /order0aGout.)2.TD$; l(l5nc%.setText#-5nc% -$; l(l5nc%Capt.setText#-8-$; l(l!eet.setText#-!eet -$; l(l!eetCapt.setText#-8-$; sld5nc%.setMaximum#FPFQ$; panelF.set0aGout#new @rid0aGout #'9 '$$; panelF.add#l(l5nc%$; panelF.add#l(l!eet$; panelF.add#l(l5nc%Capt$; panelF.add#l(l!eetCapt$; panelH.set0aGout#new /order0aGout#$$; panelH.add#sld5nc%9 /order0aGout.N3)T$; sld!eet.setMaximum#F'R$;
$;
195
sld!eet.setMinimum#8$; sld!eet.setEalue#8$; panelH.add#sld!eet9 /order0aGout.3B)T$; panel;.set0aGout#new /order0aGout#$$; panel;.add#panelF9 /order0aGout.72CTD$; panel;.add#panelH9 /order0aGout.)2.TD$; panel6.set0aGout#new /order0aGout#$$; panel6.add#panel'9 /order0aGout.72CTD$; panel6.add#panel;9 /order0aGout.)2.TD$; sldCm.addC%ange0istener # //jika nilai slider /eru(a% new C%ange0istener#$ "pu(lic void stateC%anged#C%ange3vent e$ " l(lCmCapt.setText# sldCm.getEalue#$ K - Cm$; & & $; sldCm.addMouse0istener # //jika mouse selesai melakukan pergerakan new java.awt.event.MouseBdapter#$ " pu(lic void mouseCeleased#Mouse3vent e$ " dou(le d5nc%9d!eet; d5nc% , sldCm.getEalue#$ * 8.FPFQ; d!eet , sldCm.getEalue#$ * 8.8FR'1; sld5nc%.setEalue##int$ d5nc%$; l(l5nc%Capt.setText#d5nc% K - 5nc%-$; l(l!eetCapt.setText#d!eet K - !eet-$; sld!eet.setEalue##int$ d!eet$;
& & $;
sld5nc%.addC%ange0istener # new C%ange0istener#$ "pu(lic void stateC%anged#C%ange3vent e$ " l(l5nc%Capt.setText# sld5nc%.getEalue#$ K - Cm$; &
193
$;
&
sld5nc%.addMouse0istener #new java.awt.event.MouseBdapter#$ " pu(lic void mouseCeleased#Mouse3vent e$ " dou(le dCm9d!eet; dCm , sld5nc%.getEalue#$ * '.;H; d!eet , sld5nc%.getEalue#$ * 8.8RFFF; sldCm.setEalue##int$ dCm$; l(lCmCapt.setText#dCm K - Cm-$; sld!eet.setEalue##int$ d!eet$; l(l!eetCapt.setText#d!eet K - !eet-$; & $; sld!eet.addC%ange0istener # new C%ange0istener#$ "pu(lic void stateC%anged#C%ange3vent e$ " l(l!eetCapt.setText# sld!eet.getEalue#$ K - !eet$; & & $; sld!eet.addMouse0istener #new java.awt.event.MouseBdapter#$ " pu(lic void mouseCeleased#Mouse3vent e$ " dou(le dCm9d5nc%; dCm , sld!eet.getEalue#$ * F8.HR; d5nc% , sld!eet.getEalue#$ * 1'; sldCm.setEalue##int$ dCm$; l(lCmCapt.setText#dCm K - Cm-$; sld5nc%.setEalue##int$ d5nc%$; l(l5nc%Capt.setText#d5nc% K - 5nc%-$; & & &
$; konten.add#panel6$; s%ow#$;
19E
& & pu(lic class praktek;F " pu(lic static void main#)tring args*+$ " new frame;F#$; & &
19<
,eseluruhan )rogram A
import javax.swing.*; import java.awt.*; import java.awt.event.*; class frame;'icon extends !rame " private Container konten , new Container#$; private private private private private private private private private private Menu/ar (ar , new Menu/ar#$; Menu mn!ile , new Menu#-!ile-$; Menu5tem mni!ile/uka , new Menu5tem# -/uka !ile$; Menu5tem mni!ile)impan , new Menu5tem# -)impan !ile$; Menu5tem mni!ileIeluar , new Menu5tem# -Ieluar$; Menu mn3dit , new Menu#-3dit-$; Menu5tem mniCopG , new Menu5tem#-CopG-$; Menu5tem mniCut , new Menu5tem#-Cut-$; Menu5tem mni<aste , new Menu5tem#-<aste-$; Menu mnTentang , new Menu#-Tentang-$;
private 0a(el l(lIategori , new 0a(el#-Iategori-$; )tring pilIategori*+," -7asional-9-1aera%-9 -5nternasional&; private Com(o/ox cm(Iategori , new Com(o/ox# pilIategori $; private 0a(el l(l1aera% , new 0a(el#-1aera%-$; )tring pil1aera%*+," -5ndonesia /agian /arat-9 -5ndonesia /agian Timur&; private Com(o/ox cm(1aera% , new Com(o/ox# pil1aera% $;
199
0a(el l(l udul , new 0a(el#- udul-$; Text!ield txt udul , new Text!ield#$; 0a(el l(l5si , new 0a(el#-5si-$; TextBrea txtBrea; )croll<ane j)croll<ane1 , new )croll<ane#$;
private <anel panel1 , new <anel#$; private <anel panel' , new <anel#$; private /ox (ox1 , /ox.createEertical/ox#$; private <opupMenu popmenu , new <opupMenu#$; private Menu5tem mni<opCopG , new Menu5tem#-CopG-$; private Menu5tem mni<opCut , new Menu5tem#-Cut-$; private Menu5tem mni<op<aste , new Menu5tem# -<aste$; frame;'icon#$ " super#-.niversitas /udi 0u%ur-$; set)i:e#;889;88$; set1efaultClose2peration# !rame.345T6276C02)3$; 5temDandler itemDandler , new 5temDandler#$; mni!ile/uka.addBction0istener#itemDandler$; mniFile*u'a.setEnemonic(X*X!; mniFile*u'a.set1con(new 1mage1con((.J/4.JJ:(!!; mni!ile)impan.addBction0istener#itemDandler$; mniFileSimpan.setEnemonic(XSX!; mniFileSimpan.set1con(new 1mage1con((SAP/.JJ:(!!; mni!ileIeluar.addBction0istener#itemDandler$; mniFileKeluar.setEnemonic(XKX!; mniFileKeluar.set1con(new 1mage1con((/012.JJ:(!!; mniCopG.addBction0istener#itemDandler$; mni-op;.setEnemonic(X-X!; mni-op;.set1con(new 1mage1con((-.J?.JJ:(!!; mniCut.addBction0istener#itemDandler$; mni-ut.setEnemonic(X)X!; mni-ut.set1con(new 1mage1con((-)2.JJ:(!!; mni<aste.addBction0istener#itemDandler$; mniJaste.setEnemonic(XJX!; mniJaste.set1con(new 1mage1con((JAS2/.JJ:(!!; mnFile.setEnemonic(XFX!; mn!ile.add#mni!ile/uka$; mn!ile.add#mni!ile)impan$; mn!ile.add#mni!ileIeluar$;
197
mn/dit.setEnemonic(X/X!; mn3dit.add#mniCopG$; mn3dit.add#mniCut$; mn3dit.add#mni<aste$; mn2entang.setEnemonic(X2X!; mn2entang.set1con(new 1mage1con((L/+J.JJ:(!!; (ar.add#mn!ile$; (ar.add#mn3dit$; (ar.add#mnTentang$; set Menu/ar#(ar$; popmenu.add#mni<opCopG$; popmenu.add#mni<opCut$; popmenu.add#mni<op<aste$; mniJop-op;.setEnemonic(X-X!; mniJop-op;.set1con(new 1mage1con((-.J?.JJ:(!!; mniJop-ut.setEnemonic(X)X!; mniJop-ut.set1con(new 1mage1con((-)2.JJ:(!!; mniJopJaste.setEnemonic(XJX!; mniJopJaste.set1con(new 1mage1con((JAS2/.JJ:(!!; panel1.set0aGout#new @rid0aGout#'9'$$; panel1.add#l(lIategori$; panel1.add#cm(Iategori$; panel1.add#l(l1aera%$; panel1.add#cm(1aera%$; (ox1.add#panel1$; panel'.set0aGout#new @rid0aGout#F91$$; panel'.add#l(l udul$; panel'.add#txt udul$; panel'.add#l(l5si$; (ox1.add#panel'$; txtBrea , new TextBrea#'891;$; txtBrea.set0ineNrap#true$; txtBrea.addMouse0istener # new Mouse0istener#$ " pu(lic void mouse<ressed#Mouse3vent e$ " & pu(lic void mouse3xited#Mouse3vent e$ " & pu(lic void mouse3ntered#Mouse3vent e$ " & pu(lic void mouseClicked#Mouse3vent e$ " & pu(lic void mouseCeleased#Mouse3vent e$ " //jika Click kanan maka tampilkan popup if #e.get/utton#$ ,, F$ popmenu.s%ow# e.getComponent#$9
172
e.get4#$9 e.getM#$ $; & $; j)croll<ane1.getEiewport#$.add#txtBrea9null$; (ox1.add#j)croll<ane1$; konten , getContent<ane#$; konten.set0aGout#new /order0aGout#$$; konten.add#(ox19 /order0aGout.72CTD$; setEisi(le#true$; //sama dengan s%ow#$ & private class 5temDandler implements Bction0istener "pu(lic void action<erformed#Bction3vent e$ " 2(ject o(jek , e.get)ource#$; if #o(jek ,, mni!ile/uka$ 2ption<ane.s%owMessage1ialog #frame;'icon.t%is9 -/uka !ile-9 -/uka-9 2ption<ane.<0B576M3))B@3 $; else if #o(jek ,, mni!ile)impan$ 2ption<ane.s%owMessage1ialog #frame;'icon.t%is9 -)impan-9-)impan !ile-9 2ption<ane.<0B576M3))B@3 $; else if #o(jek ,, mniCopG$ 2ption<ane.s%owMessage1ialog# frame;'icon.t%is9-CopG K txtBrea.get)electedText#$ K - 1i Text Brea -9 -CopG-9 2ption<ane.<0B576M3))B@3 $; else if #o(jek ,, mniCut$ 2ption<ane.s%owMessage1ialog# frame;'icon.t%is9 -Cut Teks di Teks Brea-9-Cut-9 2ption<ane.<0B576M3))B@3 $; else if #o(jek ,, mni<aste$ 2ption<ane.s%owMessage1ialog# frame;'icon.t%is9 -<aste Teks di Text Brea-9-<aste-9 2ption<ane.<0B576M3))B@3 $; else if #o(jek ,, mni!ileIeluar$ )Gstem.exit#8$; & & &
171
"
&
172
Ja0a&an La i$an > . "uatlah program untuk membuat J$nternalframe dengan nama +y$nternal'rame.java
//7ama file MG5nternal!rame.java import javax.swing.J1nternalFrame; import java.awt.event.*; import java.awt.*; /* Bkan digunakan pada 5nternal!rame */ public class E;1nternalFrame extends J1nternalFrame { static int open!rameCount , 8; static final int x2ffset , F89 G2ffset , F8; pu(lic MG5nternal!rame#$ " super#-1ocument ]- K #KKopen!rameCount$9 true9 //resi:a(le true9 //closa(le true9 //maximi:a(le true$;//iconifia(le set)i:e#F889F88$; //<enenempatan Nindows set0ocation# x2ffset*open!rameCount9 G2ffset*open!rameCount $;
& &
program
induk
dengan
nama
174
*/ pu(lic class 5nternal!rame1emo extends !rame implements Bction0istener " 1esktop<ane desktop; pu(lic 5nternal!rame1emo#$ " super#-5nternal!rame1emo-$; int inset , ;8; 1imension screen)i:e , Toolkit.get1efaultToolkit#$.get)creen)i:e#$; set/ounds#inset9 inset9 screen)i:e.widt% O inset*'9 screen)i:e.%eig%t O inset*'$; desktop , new 1esktop<ane#$;
&&*uat 1nternal Frame Jertama createFrame(!; setContent<ane#desktop$; set Menu/ar#createMenu/ar#$$; desktop.set1ragMode# & $; 1esktop<ane.2.T057361CB@6M213
protected Menu/ar createMenu/ar#$ " Menu/ar menu/ar , new Menu/ar#$; Menu menu , new Menu#-1ocument-$; menu.setMnemonic#IeG3vent.EI61$; menu/ar.add#menu$; Menu5tem menu5tem , new Menu5tem#-7ew-$; menu5tem.setMnemonic#IeG3vent.EI67$; menu5tem.setBccelerator#IeG)troke.getIeG)troke# IeG3vent.EI679 Bction3vent.B0T6MB)I$$; menu5tem.setBctionCommand#-new-$; menu5tem.addBction0istener#t%is$; menu.add#menu5tem$; menu5tem , new Menu5tem#-Yuit-$; menu5tem.setMnemonic#IeG3vent.EI6Y$; menu5tem.setBccelerator#IeG)troke.getIeG)troke# IeG3vent.EI6Y9 Bction3vent.B0T6MB)I$$; menu5tem.setBctionCommand#-Uuit-$; menu5tem.addBction0istener#t%is$; menu.add#menu5tem$; & return menu/ar;
pu(lic void action<erformed#Bction3vent e$ " if #-new-.eUuals#e.getBctionCommand#$$$ " &&*uat Jinternal Frame *eri'utn;a createFrame(!;
175
&
&&Eembuat internal frame baru. protected void createFrame(! { E;1nternalFrame frame " new E;1nternalFrame(!; frame.setPisible(true!; des'top.add(frame!; tr; { &&Eembuat Frame 2erbaru 2erpili# frame.setSelected(true!; $ catc# (java.beans.Jropert;Peto/xception e! {$ $ //Yuit t%e application. protected void Uuit#$ " )Gstem.exit#8$; & private static void createBnd)%ow@.5#$ " //Make sure we %ave nice window decorations. !rame.set1efault0ookBnd!eel1ecorated#true$; //Create and set up t%e window. 5nternal!rame1emo frame , new 5nternal!rame1emo#$; frame.set1efaultClose2peration# !rame.345T6276C02)3 $; frame.setEisi(le#true$;
&
&
pu(lic static void main#)tring*+ args$ " javax.swing.)wing.tilities.invoke0ater# new Cunna(le#$ " pu(lic void run#$ " createBnd)%ow@.5#$; & &$; &
173
Ja0a&an La i$an @ . Untuk +engganti model default %6:)& dapat menggunakan perintah
&Qpili# modelQ& tabbedJane.set2abJlacement(tabbedJane.*.22.E!; &&tabbedJane.set2abJlacement(tabbedJane.2.J!; &&tabbedJane.set2abJlacement(tabbedJane.+/F2!; &&tabbedJane.set2abJlacement(tabbedJane.91:L2!;
,eseluruhan )rogram A
/* * ,,,diam(il dari sun.java.documen.(ook.sample ,,,, */ import java.awt.*; import javax.swing.*; pu(lic class Ta(1emo " final static )tring /.TT27<B730 , - <anel wit% /uttons-; final static )tring T34T<B730 , - <anel wit% Text!ield-; pu(lic void addComponentTo<ane#Container pane$ " Ta((ed<ane ta((ed<ane , new Ta((ed<ane#$; " <anel card1 , new <anel#$
//(esarnGa panel disesuakan dengan (esar frame pu(lic 1imension get<referred)i:e#$ " 1imension si:e , super.get<referred)i:e#$; si:e.widt% K, 188; return si:e; & &; card1.add#new card1.add#new card1.add#new /utton#-/utton 1-$$; /utton#-/utton '-$$; /utton#-/utton F-$$;
<anel card' , new <anel#$; card'.add#new Text!ield#-Text!ield-9 '8$$; &Qpili# modelQ& tabbedJane.set2abJlacement(tabbedJane.*.22.E!; &&tabbedJane.set2abJlacement(tabbedJane.2.J!; &&tabbedJane.set2abJlacement(tabbedJane.+/F2!; &&tabbedJane.set2abJlacement(tabbedJane.91:L2!; ta((ed<ane.addTa(#/.TT27<B7309 card1$; ta((ed<ane.addTa(#T34T<B7309 card'$; pane.add#ta((ed<ane9 /order0aGout.C37T3C$; &
17E
private static void createBnd)%ow@.5#$ " //look and feel !rame.set1efault0ookBnd!eel1ecorated#true$; !rame frame , new !rame#-Ta(1emo O .niversitas /udi
0u%ur-$;
frame.set)i:e#;889188$; frame.set1efaultClose2peration# !rame.345T6276C02)3$; Ta(1emo demo , new Ta(1emo#$; demo.addComponentTo<ane#frame.getContent<ane#$$; //frame.pack#$; frame.setEisi(le#true$;
&
17<
Ja0a&an La i$an G frm6esting PROPERTIES :bjek defaultBlose:peration !ontent)ane PROPERTIES :bjek layout lbl*im PROPERTIES :bjek teCt lbl*ama PROPERTIES :bjek 6eCt lbl ertifikat PROPERTIES :bjek 6eCt lblJurusan PROPERTIES :bjek 6eCt lbl,ampus PROPERTIES :bjek 6eCt tCt*im PROPERTIES :bjek 6eCt tCt*ama PROPERTIES :bjek NILAI j'rame DJ$60:*0B>: D NILAI !ontent)ane null NILAI j>abel *im NILAI j>abel *ama NILAI j>abel ertifikat NILAI j>abel Jurusan NILAI j>abel ,ampus NILAI j6eCt'ield UkosongK NILAI j6eCt'ield
179
6eCt !h D PROPERTIES :bjek 6eCt !h +) PROPERTIES :bjek 6eCt !h +1 PROPERTIES :bjek 6eCt grpJurusan PROPERTIES :bjek rd6$ PROPERTIES :bjek 6eCt "utton#roup rd+$ PROPERTIES :bjek 6eCt "utton#roup rd1, PROPERTIES :bjek 6eCt "utton#roup rd6, PROPERTIES :bjek 6eCt
177
"utton#roup !mb,ampus PROPERTIES :bje!t !md ave PROPERTIES :bje!t 6eCt +nemoni! !mdDCit PROPERTIES :bje!t 6eCt +nemoni! JB-i*er
222
,eseluruhan )rogram A
package testing; import javax.swing..5Manager; import java.awt.*; /** * Testing.java * >p?TitleJ Testing>/p? * >p?1escriptionJ Testing Bplikasi>/p? * >p?CopGrig%tJ CopGrig%t #c$ '886>/p? * >p?CompanGJ .niversitas /udi 0u%ur>/p? * _aut%or Nindu @ata9 )kom * _version 1.8 */ pu(lic class Testing " (oolean pack!rame , false; //Construct t%e application pu(lic Testing#$ " frmTesting frame , new frmTesting#$; //Ealidate frames t%at %ave preset si:es //<ack frames t%at %ave useful //preferred si:e info9 e.g. from t%eir laGout if #pack!rame$ " frame.pack#$; & else " frame.validate#$; & //Center t%e window 1imension screen)i:e , Toolkit.get1efaultToolkit#$.get)creen)i:e#$; 1imension frame)i:e , frame.get)i:e#$; if #frame)i:e.%eig%t ? screen)i:e.%eig%t$ " frame)i:e.%eig%t , screen)i:e.%eig%t; & if #frame)i:e.widt% ? screen)i:e.widt%$ " frame)i:e.widt% , screen)i:e.widt%; & frame.set0ocation# #screen)i:e.widt% O frame)i:e.widt%$ / '9 #screen)i:e.%eig%t O frame)i:e.%eig%t$ / '$; frame.setEisi(le#true$; &
221
//Main met%od pu(lic static void main#)tring*+ args$ " trG " .5Manager.set0ookBnd!eel#.5Manager.get)Gstem0ookBnd!eelClass7ame#$$; & catc%#3xception e$ " e.print)tackTrace#$; & new Testing#$; & & package testing; import import import import java.awt.*; java.awt.event.*; javax.swing.*; com.(orland.j(cl.laGout.*;
/** * >p?TitleJ Testing>/p? * fmTesting.java * >p?1escriptionJ Testing Bplikasi>/p? * >p?CopGrig%tJ CopGrig%t #c$ '886>/p? * >p?CompanGJ .niversitas /udi 0u%ur>/p? * _aut%or Nindu @ata9 )kom * _version 1.8 */ pu(lic class frmTesting extends !rame " <anel content<ane; 0a(el l(l7im , new 0a(el#$; Text!ield txt7im , new Text!ield#$; 0a(el l(l7ama , new 0a(el#$; Text!ield txt7ama , new Text!ield#$; 0a(el l(l)ertifikat , new 0a(el#$; C%eck/ox c%)1 , new C%eck/ox#$; C%eck/ox c%)M< , new C%eck/ox#$; C%eck/ox c%)MB , new C%eck/ox#$; 0a(el l(l urusan , new 0a(el#$; /utton@roup grp urusan , new /utton@roup#$; Cadio/utton rdT5 , new Cadio/utton#$; Cadio/utton rdM5 , new Cadio/utton#$; Cadio/utton rdBk , new Cadio/utton#$; Cadio/utton rdTk , new Cadio/utton#$; 0a(el l(lIampus , new 0a(el#$; Com(o/ox cm(Iampus , new Com(o/ox#$; /utton (tn)ave , new /utton#$; /utton (tn3xit , new /utton#$; //Construct t%e frame pu(lic frmTesting#$ " ena(le3vents#BNT3vent.N5712N63E37T6MB)I$; trG "
222
&
//Component initiali:ation private void j(5nit#$ t%rows 3xception " content<ane , # <anel$ t%is.getContent<ane#$; l(l7im.setText#-7im-$; l(l7im.set/ounds#new Cectangle#'H9 'R9 Q19 1Q$$; content<ane.setMaximum)i:e# new 1imension#'1HQHRF6HQ9 '1HQHRF6HQ$ $; content<ane.set0aGout#null$; t%is.set1efaultClose2peration#345T6276C02)3$; t%is.set5con5mage#null$; t%is.setCesi:a(le#true$; t%is.set)i:e#new 1imension#FPP9 'QQ$$; t%is.setTitle#-!rame Title-$; l(l7ama.setText#-7ama-$; l(l7ama.set/ounds#new Cectangle#''9 ;P9 QR9 'H$$; txt7im.setText#--$; txt7im.set/ounds#new Cectangle#1119 'P9 PR9 '1$$; txt7ama.setText#--$; txt7ama.set/ounds#new Cectangle#1119 619 ';69 ''$$; l(l)ertifikat.setText#-)ertifikat-$; l(l)ertifikat.set/ounds#new Cectangle#'F9 P69 QH9 1P$$; c%)1.setText#-)1-$; c%)1.set/ounds#new Cectangle#1119 P;9 ;P9 1R$$; c%)M<.setText#-)M<-$; c%)M<.set/ounds#new Cectangle#1Q;9 PQ9 6Q9 1P$$; c%)MB.setBctionCommand#-jC%eck/ox'-$; c%)MB.setText#-)MB-$; c%)MB.set/ounds#new Cectangle#'H89 PR9 6Q9 1;$$; l(l urusan.setText#- urusan-$; l(l urusan.set/ounds#new Cectangle#'F9 1'69 Q69 1Q$$; rdT5.set)elected#true$; rdT5.setText#-T5-$; rdT5.set/ounds#new Cectangle#1119 1'69 FQ9 'F$$; rdM5.setText#-M5-$; rdM5.set/ounds#new Cectangle#1;R9 1'R9 ;19 '1$$; rdBk.setMargin#new 5nsets#'9 '9 '9 '$$; rdBk.setText#-BI-$; rdBk.set/ounds#new Cectangle#'819 1F89 ;F9 16$$; rdTk.setText#-TI-$; rdTk.set/ounds#new Cectangle#';69 1F19 619 1F$$; l(lIampus.setText#-Iampus-$; l(lIampus.set/ounds#new Cectangle#'F9 16F9 669 1;$$; (tn)ave.set/ounds#new Cectangle#'R9 '8R9 PP9 ''$$; (tn)ave.setMnemonic#S)S$; (tn)ave.setText#-)ave-$; (tn3xit.set/ounds#new Cectangle#'QQ9 '8R9 P'9 '1$$; (tn3xit.setMnemonic#SIS$; (tn3xit.setText#-Ieluar-$; cm(Iampus.set/ounds#new Cectangle#11R9 16H9 1P69 1P$$;
224
content<ane.add#l(l7im9 null$; content<ane.add#txt7im9 null$; content<ane.add#txt7ama9 null$; content<ane.add#l(l)ertifikat9 null$; content<ane.add#c%)19 null$; content<ane.add#c%)M<9 null$; content<ane.add#c%)MB9 null$; content<ane.add#rdT59 null$; content<ane.add#rdM59 null$; content<ane.add#rdTk9 null$; content<ane.add#rdBk9 null$; content<ane.add#l(lIampus9 null$; content<ane.add#l(l7ama9 null$; content<ane.add#l(l urusan9 null$; content<ane.add#cm(Iampus9 null$; cmbKampus.add1tem((-empa'a Eas(!; cmbKampus.add1tem((-iledug(!; cmbKampus.add1tem((9ox;(!; cmbKampus.add1tem((Salemba(!; cmbKampus.setSelected1ndex(1!; grp urusan.add#rdT5$; grp urusan.add#rdM5$; grp urusan.add#rdBk$; grp urusan.add#rdTk$; content<ane.add#(tn)ave9 null$; content<ane.add#(tn3xit9 null$;
&
//2verridden so we can exit w%en window is closed protected void processNindow3vent#Nindow3vent e$ " super.processNindow3vent#e$; if #e.get51#$ ,, Nindow3vent.N5712N6C02)57@$ " )Gstem.exit#8$; & & &
225
Ne Beans
#ambar 1E.E +engganti >ayout )ada >ayar +engganti layout layar dengan meng.clic# kanan pada layar kemudian pilih set >ayout *ull >ayout.
223
package testing; /** * * _aut%or windu */ pu(lic class Main " /** Creates a new instance of Main */ pu(lic Main#$ " & /** * _param args t%e command line arguments */ pu(lic static void main#)tring*+ args$ " // T212 code application logic %ere frmTesting frm , new frmTesting#$; frm.setEisi(le#true$; & &
/* * frmTesting.java * * Created on ulG 1H9 '8869 FJ11 BM */ package testing; /** * * _aut%or */
windu
22E
pu(lic class frmTesting extends javax.swing. !rame " /** Creates new form frmTesting */ pu(lic frmTesting#$ " initComponents#$; cmbKampus.add1tem((-empa'a Eas(!; cmbKampus.add1tem((-iledu'(!; cmbKampus.add1tem((9ox;(!; cmbKampus.add1tem((Salemba(!; cmbKampus.setSelected1ndex(1!; cmbKampus.setEaximum9ow-ount(8!; & /** T%is met%od is called from wit%in * t%e constructor to * initiali:e t%e form. * NBC757@J 1o 72T modifG t%is code. * T%e content of t%is met%od is * alwaGs regenerated (G t%e !orm 3ditor. */ // >editorOfold defaultstate,-collapsed// desc,- @enerated Code -? private void initComponents#$ " j0ist1 , new javax.swing. 0ist#$; (tn urusan , new javax.swing./utton@roup#$; l(l7im , new javax.swing. 0a(el#$; txt7im , new javax.swing. Text!ield#$; l(l7ama , new javax.swing. 0a(el#$; txt7ama , new javax.swing. Text!ield#$; l(l)ertifikat , new javax.swing. 0a(el#$; c%)1 , new javax.swing. C%eck/ox#$; c%)M< , new javax.swing. C%eck/ox#$; c%)MB , new javax.swing. C%eck/ox#$; l(l urusan , new javax.swing. 0a(el#$; rdT5 , new javax.swing. Cadio/utton#$; rdM5 , new javax.swing. Cadio/utton#$; rdBI , new javax.swing. Cadio/utton#$; rdTI , new javax.swing. Cadio/utton#$; j0a(el1 , new javax.swing. 0a(el#$; cm(Iampus , new javax.swing. Com(o/ox#$; (tn)ave , new javax.swing. /utton#$; j/utton1 , new javax.swing. /utton#$; getContent<ane#$.set0aGout#null$; set1efaultClose2peration# javax.swing.NindowConstants.345T6276C02)3 $; l(l7im.setText#-7im-$; getContent<ane#$.add#l(l7im$; l(l7im.set/ounds#;89 '89 ;89 '8$; getContent<ane#$.add#txt7im$; txt7im.set/ounds#1189 '89 1889 1P$; l(l7ama.setText#-7ama-$; getContent<ane#$.add#l(l7ama$;
22<
l(l7ama.set/ounds#;89 ;89 'Q9 1H$; getContent<ane#$.add#txt7ama$; txt7ama.set/ounds#1189 ;89 1P89 1P$; l(l)ertifikat.setText#-)ertifikat-$; getContent<ane#$.add#l(l)ertifikat$; l(l)ertifikat.set/ounds#;89 R89 689 '8$; c%)1.setText#-)1-$; getContent<ane#$.add#c%)1$; c%)1.set/ounds#1189 R89 ;89 'F$; c%)M<.setText#-)M<-$; getContent<ane#$.add#c%)M<$; c%)M<.set/ounds#1Q89 R89 689 'F$; c%)MB.setText#-)MB-$; getContent<ane#$.add#c%)MB$; c%)MB.set/ounds#'F89 R89 HQ9 'F$; l(l urusan.setText#- urusan-$; getContent<ane#$.add#l(l urusan$; l(l urusan.set/ounds#;89 1189 ;89 1H$; (tn urusan.add#rdT5$; rdT5.set)elected#true$; rdT5.set0a(el#-T5-$; getContent<ane#$.add#rdT5$; rdT5.set/ounds#1189 1189 H89 'F$; (tn urusan.add#rdM5$; rdM5.setText#-M5-$; getContent<ane#$.add#rdM5$; rdM5.set/ounds#1689 1189 ;89 'F$; (tn urusan.add#rdBI$; rdBI.setText#-BI-$; getContent<ane#$.add#rdBI$; rdBI.set/ounds#'189 1189 ;89 'F$; (tn urusan.add#rdTI$; rdTI.setText#-TI-$; getContent<ane#$.add#rdTI$; rdTI.set/ounds#'689 1189 FQ9 'F$; j0a(el1.setText#-Iampus-$; getContent<ane#$.add#j0a(el1$; j0a(el1.set/ounds#;89 1H89 ;89 1H$; getContent<ane#$.add#cm(Iampus$; cm(Iampus.set/ounds#1189 1H89 1P89 ''$; (tn)ave.setMnemonic#S)S$; (tn)ave.set0a(el#-)impan-$; getContent<ane#$.add#(tn)ave$; (tn)ave.set/ounds#;89 1R89 6Q9 'F$;
229
j/utton1.setMnemonic#SIS$; j/utton1.setText#-Ieluar-$; getContent<ane#$.add#j/utton1$; j/utton1.set/ounds#'F89 1R89 Q89 'F$; java.awt.1imension screen)i:e , java.awt.Toolkit.get1efaultToolkit#$.get)creen)i:e#$; set/ounds# #screen)i:e.widt%OFQ'$/'9 #screen)i:e.%eig%tO'6F$/'9 FQ'9 '6F$;
& // >/editorOfold?
/** * _param args t%e command line arguments */ pu(lic static void main#)tring args*+$ " java.awt.3ventYueue.invoke0ater#new Cunna(le#$ " pu(lic void run#$ " new frmTesting#$.setEisi(le#true$; & &$; & // Earia(les declaration O do not modifG private javax.swing./utton@roup (tn urusan; private javax.swing. /utton (tn)ave; private javax.swing. C%eck/ox c%)1; private javax.swing. C%eck/ox c%)MB; private javax.swing. C%eck/ox c%)M<; private javax.swing. Com(o/ox cm(Iampus; private javax.swing. /utton j/utton1; private javax.swing. 0a(el j0a(el1; private javax.swing. 0ist j0ist1; private javax.swing. 0a(el l(l urusan; private javax.swing. 0a(el l(l7ama; private javax.swing. 0a(el l(l7im; private javax.swing. 0a(el l(l)ertifikat; private javax.swing. Cadio/utton rdBI; private javax.swing. Cadio/utton rdM5; private javax.swing. Cadio/utton rdT5; private javax.swing. Cadio/utton rdTI; private javax.swing. Text!ield txt7ama; private javax.swing. Text!ield txt7im; // 3nd of varia(les declaration &
227
Jawaban A Ha, diperbolehkan. )enggunaan perintah try XY dapat ditutup minimal dengan !at!h atau finally. 2. 1pakah penulisan program dibawah ini diperbolehkan dan tetap mendapatkan pesan kesalahan=
!a !$ (E)!e1 i,n e" I J
Jawaban A )enggunaan DC!eption dapat menanganani atau menangkap keseluruhan pesan kesalahan. 6etap tidak disarankan karena pesan aslinya tidak terba!a dan tidak efesien. 4. 1pakah akan terjadi kesalahan pada program dibawah ini= 1kankah program dapat terkompilasi dengan baik=
r/ I J !a !$ (E)!e1 i,n e" I J !a !$ (Ari $.e i!E)!e1 i,n a" I J
)ada program penanganan pertama %DC!eption e& sudah menangkap berbagai ma!am pesan kesalahan, sehingga penganan kedua %1rithmeti!DC!eption a& tidak pernah ter!apai. )rogram tidak akan terkompilasi.
212
Ja0a&an La i$an %% . . . 1 %satu& detik G 1222 milidetik 1 8ari G 1222 milidetik J E2 detik J E2 menit J 25 Jam 6ahun aktif G 1722 O getDate%&
,eseluruhan program A
import import import import java.awt.*; java.awt.event.*; javax.swing.*; java.util.*;
class !rame1 extends !rame " <anel content<ane; 0a(el j0a(el1 , new 0a(el#$; !rame1#$ " super#-.niversitas /udi 0u%ur-$; set1efaultClose2peration# !rame.345T6276C02)3$; content<ane , # <anel$ t%is.getContent<ane#$; j0a(el1.set!ont#new !ont#-1ialog-9 19 1R$$; j0a(el1.set!oreground#Color.(lack$; j0a(el1.setDori:ontalBlignment# )wingConstants.C37T3C $; j0a(el1.setText#- am-$; j0a(el1.set/ounds#new Cectangle#'P9 ;'9 '6'9 F;$$; content<ane.set0aGout#null$; t%is.set)i:e#new 1imension#FF69 1;;$$; Bction stopwatc% , new B(stractBction#$" pu(lic void action<erformed#Bction3vent e$ " j0a(el1.setText#2ampil2anggal(56 (2(!$; & &; javax.swing.2imer stp " new javax.swing.2imer(15556 stopwatc#!; stp.start(!; content<ane.add#j0a(el19 null$; & s%ow#$;
private String 2ampil2anggal(int lda;6 String tipe! { String s2anggal; long l2anggal " new ,ate(!.get2ime(!;
211
&&CS>55555 " satu#ari ( S5 0 S5 0 %> 0 1555! l2anggal " l2anggal N lda; Q CS>55555; ,ate d2anggal " new ,ate(l2anggal!; s2anggal " ( d2anggal.get?ear(! N 1B55 ! N (R( N (d2anggal.getEont#(!N 1! N (R( N d2anggal.get,ate(!; if (tipe.to)pper-ase(!.eTuals((2(!!{ s2anggal " s2anggal N ( ( N d2anggal.getLours(! N (M( N d2anggal.getEinutes(! N (M( N d2anggal.getSeconds(!; $ $ & pu(lic class praktek18 " pu(lic static void main#)tring args*+$ " new !rame1#$; & & return (s2anggal!;
212
Bara pemba!aan
String atxt[ " txtmsg.split((Y(!; S;stem.out.println(atxt.lengt#!; if ( atxt.lengt# "" 1!{ txtArea.set2ext(atxt[5 !; $ else { cmbKategori.setSelected1ndex( 1nteger.parse1nt(atxt[5 ! !; cmb,aera#.setSelected1ndex( 1nteger.parse1nt(atxt[1 ! !; $
)rogram keseluruhan A
//program kedua pulu% tuju% //lati%an ke empat import javax.swing.*; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.*; import java.lang.*; import java.io.*; class frame;' extends !rame " private Container konten , new Container#$; private private private private private private Menu/ar (ar , new Menu/ar#$; Menu mn!ile , new Menu#-!ile-$; Menu5tem mni!ile/aru , new Menu5tem# -!ile /aru$; Menu5tem mni!ile/uka , new Menu5tem# -/uka !ile$; Menu5tem mni!ile)impan , new Menu5tem# -)impan !ile$; Menu5tem mni!ileIeluar , new Menu5tem# -Ieluar-
214
$; Menu mn3dit , new Menu#-3dit-$; Menu5tem mniCopG , new Menu5tem#-CopG-$; Menu5tem mniCut , new Menu5tem#-Cut-$; Menu5tem mni<aste , new Menu5tem#-<aste-$; Menu mnTentang , new Menu#-Tentang-$; Menu5tem mniTentang , new Menu5tem# -Tentang Iami$;
private 0a(el l(lIategori , new 0a(el#-Iategori-$; )tring pilIategori*+," -7asional-9-1aera%-9-5nternasional&; private Com(o/ox cm(Iategori , new Com(o/ox# pilIategori $; private 0a(el l(l1aera% , new )tring pil1aera%*+," 0a(el#-1aera%-$;
0a(el l(l udul , new 0a(el#- udul-$; Text!ield txt udul , new Text!ield#$; 0a(el l(l5si , new 0a(el#-5si-$; TextBrea txtBrea; )croll<ane j)croll<ane1 , new )croll<ane#$;
private <anel panel1 , new <anel#$; private <anel panel' , new <anel#$; private /ox (ox1 , /ox.createEertical/ox#$; private private private private <opupMenu popmenu , new <opupMenu#$; Menu5tem mnipopCopG , new Menu5tem#-CopG-$; Menu5tem mnipopCut , new Menu5tem#-Cut-$; Menu5tem mni<aste , new Menu5tem#-<aste-$;
File,ialog fd%"new File,ialog( t#is6(Save As..(6File,ialog.SAP/ !; File,ialog fd1"new File,ialog( t#is6(.pen..(6File,ialog.+.A, !; String txtmsg6 cuttext; -lipboard clipb; frame;'#$" super#-.niversitas /udi 0u%ur-$; set)i:e#;889;88$; set1efaultClose2peration# !rame.345T6276C02)3$;
215
5temDandler itemDandler , new 5temDandler#$; mni!ile/aru.addBction0istener#itemDandler$; mni!ile/uka.addBction0istener#itemDandler$; mni!ile)impan.addBction0istener#itemDandler$; mni!ileIeluar.addBction0istener#itemDandler$; mniCopG.addBction0istener#itemDandler$; mniCut.addBction0istener#itemDandler$; mni<aste.addBction0istener#itemDandler$; mniTentang.addBction0istener#itemDandler$; mnipopCopG.addBction0istener#itemDandler$; mnipopCut.addBction0istener#itemDandler$; mnipop<aste.addBction0istener#itemDandler$; mn!ile.add#mni!ile/aru$; mn!ile.add#mni!ile/uka$; mn!ile.add#mni!ile)impan$; mn!ile.add#mni!ileIeluar$; mn3dit.add#mniCopG$; mn3dit.add#mniCut$; mn3dit.add#mni<aste$; mnTentang.add#mniTentang$; (ar.add#mn!ile$; (ar.add#mn3dit$; (ar.add#mnTentang$; set Menu/ar#(ar$; popmenu.add#mnipopCopG$; popmenu.add#mnipopCut$; popmenu.add#mnipop<aste$; panel1.set0aGout#new @rid0aGout#'9'$$; panel1.add#l(lIategori$; panel1.add#cm(Iategori$; panel1.add#l(l1aera%$; panel1.add#cm(1aera%$; (ox1.add#panel1$; panel'.set0aGout#new @rid0aGout#F91$$; panel'.add#l(l udul$; panel'.add#txt udul$; panel'.add#l(l5si$; (ox1.add#panel'$; txtBrea , new TextBrea#'891;$; txtBrea.set0ineNrap#true$; txtBrea.addMouse0istener # new Mouse0istener#$ " pu(lic void mouse<ressed#Mouse3vent e$ " &
213
pu(lic void mouse3xited#Mouse3vent e$ " & pu(lic void mouse3ntered#Mouse3vent e$ " & pu(lic void mouseClicked#Mouse3vent e$ " & pu(lic void mouseCeleased#Mouse3vent e$ " //jika Click kanan maka tampilkan popup if #e.get/utton#$ ,, F$ popmenu.s%ow# e.getComponent#$9 e.get4#$9 e.getM#$ $; & $; j)croll<ane1.getEiewport#$.add#txtBrea9null$; (ox1.add#j)croll<ane1$; konten , getContent<ane#$; konten.set0aGout#new /order0aGout#$$; konten.add#(ox19 /order0aGout.72CTD$; setEisi(le#true$; //sama dengan s%ow#$ & private class 5temDandler implements Bction0istener "pu(lic void action<erformed#Bction3vent e$" clip(, Toolkit.get1efaultToolkit#$.get)GstemClip(oard#$; 2(ject o(jek , e.get)ource#$; if #o(jek ,, mni!ile/aru$" cm(Iategori.set)elected5ndex#8$; cm(1aera%.set)elected5ndex#8$; txt udul.setText#--$; txtBrea.setText#--$; &else if #o(jek ,, mni!ile/uka$ " trG" fd1.setPisible(true!; String filename"fd1.getFile(!; String dirname"fd1.get,irector;(!; File openfile"new File(dirname6filename!; File1nputStream fis"new File1nputStream( .penfile !; int b;telengt#"fis.available(!; txtmsg " ((; for ( int b;tecount"5; b;tecountDb;telengt#; b;tecountNN! { &
21E
c#ar fc#"(c#ar!fis.read(!; txtmsg"txtmsgNfc#; $ String atxt[ " txtmsg.split((Y(!; S;stem.out.println(atxt.lengt#!; if ( atxt.lengt# "" 1!{ txtArea.set2ext(atxt[5 !; $ else { cmbKategori.setSelected1ndex( 1nteger.parse1nt(atxt[5 ! !; cmb,aera#.setSelected1ndex( 1nteger.parse1nt(atxt[1 ! !; txtJudul.set2ext(atxt[% !; txtArea.set2ext(atxt[8 !;
$ &catc%#3xception ioe$" 2ption<ane.s%owMessage1ialog # frame;'.t%is9ioe.to)tring#$9 -3rror-9 2ption<ane.<0B576M3))B@3$; & &else if #o(jek ,, mni!ile)impan$ trG" )tring s)impan; sSimpan " cmbKategori.getSelected1ndex(! N (Y( N cmb,aera#.getSelected1ndex(! N (Y( N txtJudul.get2ext(! N (Y( N txtArea.get2ext(!; fd%.setPisible(true!; File.utputStream fos1"new File.utputStream( fd%.get,irector;(! Nfd%.getFile(! !; fos1.write(sSimpan.get*;tes(!!; fos1.close(!; $catc#(/xception ioe! { J.ptionJane.s#owEessage,ialog( frame<%.t#is6ioe.toString(!6 (/rror(6J.ptionJane.J+A143E/SSA:/ !; &else if #o(jek ,, mniCopG == o(jek ,, mnipopCopG$" trG" cuttext,txtBrea.get)electedText#$; if cuttext.eUuals#--$$ cuttext , txtBrea.getText#$; )tring)election sel,new )tring)election# Cuttext $; clip(.setContents#sel9null$; &catc%#3xception ioe$ " 2ption<ane.s%owMessage1ialog #
21<
$; & &else if #o(jek ,, mniCut == o(jek ,, mnipopCut $" trG" cuttext,txtBrea.get)electedText#$; )tring)election sel,new )tring)election# Cuttext $; clip(.setContents#sel9null$; int cutindex,txtBrea.getText#$.index2f# cuttext $; txtBrea.replaceCange# --9cutindex9 cutindex K cuttext.lengt%#$ $; &catc%#3xception ioe$" 2ption<ane.s%owMessage1ialog# frame;'.t%is9ioe.to)tring#$9 -3rror-9 2ption<ane.<0B576M3))B@3 $; & &else if # o(jek ,, mni<aste == o(jek ,, mnipop<aste $" trG" Transfera(le cont,clip(.getContents#t%is$; cuttext,#)tring$# cont.getTransfer1ata# 1ata!lavor.string!lavor$ $;
int getcaretpos,txtBrea.getCaret<osition#$; txtBrea.insert#cuttext9getcaretpos$; &catc%#3xception ioe$" 2ption<ane.s%owMessage1ialog# frame;'.t%is9ioe.to)tring#$9 -3rror-9 2ption<ane.<0B576M3))B@3$; & &else if #o(jek ,, mniTentang$" 2ption<ane.s%owMessage1ialog # frame;'.t%is9 -/a%asa <emrograman FO.niversitas /udi 0u%ur-9 -Tentang-9 2ption<ane.<0B576M3))B@3 $; &else if #o(jek ,, mni!ileIeluar$ )Gstem.exit#8$; & & &
219
pu(lic class praktek;'" pu(lic static void main#)tring args*+$" new frame;'#$; & &
217
BAB XVII
PENUTUP
1khir kata, penulis berharap buku ini dapat berkontribusi dalam upaya pengembangan perangkat lunak di $ndonesia. 6erutama, ditujukan pada mahasiswa dan lulusan perguruan tinggi. elanjutnya penulis juga berharap masukkan dan kritik dari para pengguna maupun dari kalangan praktisi.
222
BAB XVIII
DAFTAR PUSTAKA
. . . . . . . . . $ 14550008s-n8!,. $ 14556a7a8s-n8!,. 6a7a( 1*f e*i i,n $ 14550008./sK'8!,. $ 145500086a7a#s8!,.5E)a.1'e+,*e $ 145500086free8,r2 $ 145500081en a$,8,r2 T-n -nan Pe.r,2ra.an Ja7a Ji'i*#( Ran2san2 P-rna.a Dik a Ba$asa Pe.r,2ra.an : P Ja7a( S1i s Har!, Les'ie
221
TENTANG PENULIS
)enulis bernama -indu #ata, ,om terlahir di Jakarta pada tanggal 27 Juli 17<E. sejak tahun 1777 penulis bekerja pada instansi pemerintah, yaitu >,"* 1*61(1 sebagai Database 1dministrator, analisa dan programmer bagian pengembangan dan penelitian. elain itu penulis merupakan salah satu dosen di universitas "udi >uhur dengan mata kuliah UniC, "ahasa )emrograman 4 T Java lanjutan. "ahasa )emrograman 5 T Java komunikasi dan mobile, )engelolalan istem $nformasi, )eran!angan istem 1plikasi dan istem Database 2 T Database >anjutan. )enulis Juga sebagai pengajar di >embaga )endidikan Jurnalistik 1*61(1 %>)J1& T >,"* 1*61(1, khusus dibidang informatika, dan pengajar lepas. 8obi di bidang teknik informatika %6$&, khususnya dibidang pemrograman, telah digeluti sejak memasuki bangku kuliah trata atu % 1& dengan jurusan 6eknik $nformatika di Universitas "udi >uhur tahun 1773, dan menyelesaikan studinya tahun 1777. eiring waktu berjalan dan perkembangan $6 yang semakin pesat, penulis mengasah kemampuan dan memliki ketrampilan di bidang sistem operasi seperti olaris. un +i!rosystem, 1$J T $"+ ( E222, linuC, dan +i!rosoft -indows. "egitu pula dibidang pemrograman, bahasa pemrograman yang telah kuasai seperti +s. ?isual "asi!, ?"1 + . 1!!ess, )8), 1 ), :ra!le $1 , -eb programming dan Java , dengan database +s.1!!ess, +y @l, +s. 1!!ess, +s. @l erver, dan :ra!le. Juga tools yang digunakan seperti eagate Brystal (eport dan networking %6B)L$), UD), +ulti!asting dan D?"L$)&. )engalaman membuat program di >,"* 1*61(1 ataupun sebagai programmer lepas telah dijalani. Bontoh program di tempat penulis bekerja, penulis telah membuat seperti program komunikasi ( 242, 6B) dan D?"L$) dengan sarana modem sampai satelit. Dan sebagai pemrogramer lepas, penulis telah membuat diberbagai instasi pemerintah dan swasta. Bita.!ita untuk turut memajukan bangsa dan negara melalui kemampuan penulis, salah satunya dengan menulis buku ini. Dan berharap, dengan adanya buku ini, jika seseorang yang tidak bisa menjadi bisa dan yang sudah bisa menjadi lebih bisa. ,ritik dan saran sangat dinanti dengan mengirimkannya ke email penulis, yaitu windu/antara.!o.id atau windu0gata/yahoo.!om. ,arena penulis bukanlah orang yang sempurna, masih banyak yang harus dipelajari dan rasa ingin memperbaiki sehingga dapat menulis buku.buku lainnya. U!apan terima kasih, penulis u!apkan atas perhatiannya. Dan terima kasih terdalam teruntuk istri dan anak.anakku, keluarga, guru.guru, keluarga besar >,"* 1*61(1, ,eluarga "esar Universitas "udi >uhur dan *egeri ku $ndonesia. LL Hi*-1'a$ Ban2sa *an Ne2ara( sa/a .en!in ai.- INDONESIA LLL
222