Anda di halaman 1dari 222

BAHASA PEMROGRAMAN JAVA

GUI, ERROR EXCEPTION, THREAD, I/O (INPUT/OUTPUT), DATABASE & PEMBUATAN LAPORAN

WINDU GATA, SKOM

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

GUI (Grafik User In erfa!e"


)ertanyaan mendasar mengenai penggunaan tampilan atau #U$ dalam program adalah seberapa penting hal itu dilakukan. "ukankah program sudah berjalan sesuai dengan permintaan= )ertanyaan itu biasanya menghantui setiap pengembang program % pro ra!!er& pada saat membuat program. 6entu saja kepentingan penggunaan tampilan akan berpulang pada penempatan program itu sendiri. Untuk program yang hanya ditempatkan pada sisi komputer server yang jarang berinteraksi dengan pengguna, maka fungsi dasar program dirasa !ukup memadai. 6etapi apabila program tersebut diperkirakan akan banyak berinteraksi dengan pengguna, maka ada baiknya jika program menggunakan tampilan. "eberapa alasan bahwa program harus menggunakan tampilan, yaitu . Dengan tampilan, program akan nampak jauh lebih menarik . $nteraktif . User 'riendly atau mudah dalam penggunaannya . Dapat berinteraksi dengan peralatan seperti mouse, joysti!k dan peralatan lainnya. Jika pengembang program peduli terhadap tampilan, biasanya program yang dihasilkan akan lebih diterima oleh pengguna. "ahkan sering karena tampilan yang menarik, program itu memiliki nilai yang lebih tinggi dibandingkan dengan program lain dengan tampilan yang sederhana. aat ini, terdapat beberapa model 'rame #U$ yang dapat digunakan saat mengembangkan program Java yaitu java.awt.F dan javaC.swing.F. Di dalam buku ini, untuk tampilan #U$, penulis menggunakan javaC.swing.F, yaitu J'rame, Jlabel, J6eCt'ield, J(adio"utton, JBhe!k"oC, JBombo"oC, J6eCt1rea, J lider, J+enu"ar, J)opUp+enu, J+enu$tem, dan tools lainnya. Disertakan pula !ara instalasi dan penggunaan "orland J"uilder dan *etbean dalam pembuatan aplikasi #U$. JFRAME aat kita membuat program Java #U$, yang pertama kali kita harus kuasai adalah penggunaan J'rame. Jframe digunakan untuk mendesainmodel tampilan yang didalamnya dapat kita tempatkan komponen.komponen lainnya. Bontoh penggunaan tampilan frame pada program Java A
//program pertama //Tidak Menggunakan Construktor import javax.swing.JFrame; class frame1{ public static void main(String args [ !{ JFrame tampil " new JFrame(!; tampil.s#ow(!; $ $

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);

super("Universitas Budi Luhur");

setResiza !e("a!se);

this.setSize(300,200)

#ambar 1.2. J'rame Dan )roperty


//program ketiga import javax.swing.*; class frame61 extends

!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

GRAFIK DUA DIMENSI (#D" PADA JFRAME


#rafik dua dimensi %2D& menggunakan class yang terdapat pada java.awt.F, yaitu Banvas. ,omponen Banvas tersebut berbentuk kotak kosong pada layar. Di dalam Banvas tersebut dapat kita gunakan sebagai media gambar 2 %dua& dimensi. )enggunaan Banvas harus dibarengi dengan sub !lass paint sebagai media gambar yang berupa perintah. Bara menggabungkan penggunaan Banvas dan Jframe adalah sebagai berikut A

#ambar 2.1. #rafik dua Dimensi %2D& Dan J'(1+D


//program ke empat import javax.swing.*; import java.awt.*; //Class Canvas class grap1 extends -anvas" public void paint (:rap#ics g!" &&(x6;6widt#6#eig#t! g.draw9ect(16<6<56%5!; g.draw+ine(8<6<561556=5!; &&(x6;6widt#6#eig#t6arcwidt#6arc#eig#t g.draw9ound9ect(16<56856>56<6155!; g.set-olor(-olor.?/++.@!; &&set warna g.draw.val(1156<56>5685!; g.setFont(new Font((2a#oma(6Font.12A+1-6%5!!; g.drawString((B<11<5518>(6C561<!; g.set-olor(-olor.*+)/!; &&set warna g.fill9ect(161156856%5!; g.fill.val(<561156856%5!; & &

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#$;

pu(lic static void main#)tring args*+$" new grap11#$; & &

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!

,otak dengan warna di dalamnya fill9ect (x6;6widt#6#eig#t!

)enggunaan 'ont setFont(new Font((DEodel FontF(6 DS2A4,A9G*.+,G12A+1-F6 DSi7eF!!

tring drawstring(HDtulisanFI6x6;!

#aris draw+ine(x6;6widt#6#eig#t!

"undar draw.val(x6;6widt#6#eig#t!

"undar dengan warna didalamnya fill.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

#ambar 2.2. #rafik 2D "endera +erah )utih

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

C%eck/ox Cadio/utton Com(o/ox /utton

#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#$

+embuat 0a(el tanpa gambar dan tanpa tulisan di dalamnya


J+abel#5con image$ +embuat 0a(el

dengan gambar. ali n!ent %03!T,

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

dengan isi teks di dalamnya.

J+abel#)tring text9 5con icon9 int %ori:ontalBlignment$

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@$.

hori)ontal ali n!ent %03!T,

Be&era1a Method /an2 $ar-s *ike a$-i


)tring get2ext#$

+endapatkan nilai string pada 0a(el


void set2ext#)tring text$

+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.

J2extField#)tring text9 int columns$ +embuat Text!ield dengan isi teks di

Be&era1a Method /an2 $ar-s *ike a$-i


void addAction+istener#Bction0istener l$

+emberikan action listener pada J6eCt'ield


)tring get2ext#$

+endapatkan nilai string dari Text!ield.


void setFont#!ont f$

1E

+erubah 'ont pada Text!ield


void set2ext#)tring Text$

+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

dengan posisi tidak ter!entangLterpilih dengan tampilan

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

Be&era1a Method /an2 $ar-s *ike a$-i


/oolean isSelected#$

+endapatkan nilai dari C%eck/ox. Jika ter!entangLterpilih maka nilainya adalah true, apabila tidak ter!entang nilainya adalah false.
void setSelected#$

+emberikan nilai true atau false pada objek C%eck/ox. httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLbutton.html

JRa*i,B- ,n Digunakan untuk memilih satu dari beberapa pilihan.

+,ns r-! ,r
J9adio*utton#$

+embuat Cadio/utton dengan posisi tidak ter!entangLterpilih dan tanpa isian teks.
J9adio*utton#5con icon$ +embuat Cadio/utton

dengan posisi tidak ter!entangLterpilih dengan tampilan

gambar dengan tanpa teks.


J9adio*utton#5con icon9 (oolean selected$ +embuat Cadio/utton dengan gambar, tanpa teks

dan posisi ter!entangLterpilih

sesuai dengan parameter "oolean yang diberikan.


J9adio*utton#)tring text$ +embuat Cadio/utton

dengan posisi tidak ter!entangLterpilih dengan teks. sesuai dengan

J9adio*utton#)tring text9 (oolean selected$ +embuat Cadio/utton dengan teks dan posisi ter!entangLterpilih

parameter boolean yang diberikan.


J9adio*utton#)tring text9 5con icon$ +embuat Cadio/utton dengan teks dan

gambar ikon dengan posisi tidak

ter!entangLterpilih.
J9adio*utton#)tring text9 5con icon9 (oolean selected$ +embuat Cadio/utton dengan teks, gambar ikon dan posisi ter!entangLterpilih

disesuaikan dengan parameter "oolean yang diberikan.

19

Be&era1a Method /an2 $ar-s *ike a$-i


/oolean isSelected#$

+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

Be&era1a Method /an2 $ar-s *ike a-i


void add#B(stract/utton ($

+enambah button pada group.


void remove#B(stract/utton ($

+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

+embuat Com(o/ox dengan Com(o/oxModel yang diinginkan #DefaultBombo"oC+odel, +etal'ileBhooserU$.Dire!toryBombo"oC+odel, +etal'ileBhooserU$.'ilterBombo"oC+odel&.


J-ombo*ox#2(ject*+ items$ +embuat Com(o/ox dengan J-ombo*ox#Eector items$ +embuat Com(o/ox dengan

isian berupa array. element ?e!tor.

22

Be&era1a Method /an2 $ar-s *ike a$-i


Eoid add1tem#2(ject an2(ject$ +enambah $tem pada Com(o/ox. 5nt get1tem-ount#$

+endapat nilai jumlah item pada Com(o/ox.


2(ject get1temAt#int index$

+endapatkan nilai dari item dengan $ndeC yang ditentukan.


int getEaximum9ow-ount#$

+endapatkan jumlah nilai maksimum list pada


int getSelected1ndex#$

Com(o/ox Com(o/ox.

+endapatkan nilai item ke berapa %indeC& pada


2(ject getSelected1tem#$

+endapatkan isi dari Com(o/ox.


(oolean is/ditable#$

+endapatkan nilai true atau false dari status editable


Com(o/ox. void removeAll1tems#$

+enghapus semua item pada Com(o/ox.


void remove1tem#2(ject an2(ject$

+enghapus salah satu item pada Com(o/ox.


void set/ditable#(oolean a!lag$

+erubah status editable pada


void set/nabled#(oolean ($

Com(o/ox.

+engaktifkan atau menon aktifkan Com(o/ox .


void setEaximum9ow-ount#int count$

+enampilkan maCimum item yang dapat ditampilkan


Com(o/ox. void setSelected1ndex#int an5ndex$ merubah pointer 5ndex. void setSelected1tem#2(ject an2(ject$

+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 tanpa teks dan gambar ikon.


J*utton#5con icon$

+embuat tombol dengan gambar ikon.


J*utton#)tring text$

+embuat tombol dengan tampilan teks.


J*utton#)tring text9 5con icon$

+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

s2ampilN"(OnKampus6(; s2ampilN"cmbKampus.get1temAt( cmbKampus.getSelected1ndex(! !; J.ptionJane.s#owEessage,ialog( null6s2ampil 6 (LAS1+(6 J.ptionJane.14F.9EA21.43E/SSA:/

!; $ else {S;stem.exit (5!;$

&

$ $ pu(lic static void main#)tring args*+$" new frame'F#$; &

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

#ambar 4.2 >atihan +enambah $!on 2E

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.

0ist Multiple )election

0ist )ingle )election

#ambar 5.1. 'orm $nput +ahasiswa %J>$ 6& JLIST +embuat tampilan data list

Constructor
J+ist#$

+embuat

0ist

standar elemen dengan non.null !odel. elemen array.

J+ist#0istModel dataModel$ +embuat 0ist yang menampilkan J+ist#2(ject*+ list1ata$ +embuat 0ist yang menampilkan J+ist#Eector list1ata$ +embuat 0ist yang

menampilkan elemen dengan model Eector.

29

Be&era1a Method /an2 $ar-s *ike a$-i


int getSelected1ndex#$

+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 dalam bentuk 1rray dari sel terpilih.


(oolean isSelected1ndex#int index$

+endapatkan nilai true apabila indeC terpilih dan akan mengembalikan nilai false jika tidak terpilih.
(oolean isSelection/mpt;#$

+endapatkan nilai true apabila tidak ada sel yang terpilih.


void setSelected1ndex#int index$

+engaktifkan sebuah sel .


void setSelectedPalue#2(ject an2(ject9 (oolean s%ould)croll$

+engaktifkan objek pada list.


void setSelection*ac'ground#Color selection/ackground$

+emberikan warna ba!kground.


void setSelectionForeground#Color selection!oreground$

+emberikan warna foreground.


void setSelectionEode#int selectionMode$ +erubah model list menjadi sin le selection >o(ject?.set)electionMode#0ist)electionModel.)57@036)3 03CT527$

atau !ultiple selection.

>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

NORTH +ENTER SOUTH

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

panel4%2,2& "order>ayout. :U68 lbl,ampus !md ave

!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

Bontoh program java untuk #ambar 5.1 A


//program ke enam import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; class frameF1 extends !rame" private Container konten , new Container#$; private private private private private <anel panel1 , new <anel#$; 0a(el l(l7im , new 0a(el#$; Text!ield txt7im , new Text!ield#18$; 0a(el l(l7ama , new 0a(el#$; Text!ield txt7ama , new Text!ield#'8$;

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#$;

private <anel panelH , new frameF1#$"

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

$; & else ")Gstem.exit #8$;& & &

pu(lic static void main#)tring args*+$" new frameF1#$; & &

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.

#ambar 5.4. ,onversi uhu

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 dengan posisi ditekan kemudian digerakkan.


void mouseEoved#Mouse3vent e$

+ouse digerakkan tanpa ada tombol yang ditekan. M,-seLis ener +endeteksi tombol mouse yang digunakan

Method
void mouse-lic'ed#Mouse3vent e$

+ouse di.clic# atau ditekan tombolnya kemudian langsung dilepaskan.


void mouse/ntered#Mouse3vent e$

,etika mouse memasuki komponen.


void mouse/xited#Mouse3vent e$

,etika mouse keluar dari komponen.


void mouseJressed#Mouse3vent e$

6ombol mouse ditekan.


void mouse9eleased#Mouse3vent e$

6ombol mouse dilepaskan Ke/Lis ener +endeteksi tombol keyboard yang digunakan

43

Method
void 'e;Jressed#IeG3vent e$

6ombol keyboard ditekan.


void 'e;9eleased#IeG3vent e$

6ombol keyboard dilepas.


void 'e;2;ped#IeG3vent e$

6ombol keyboard melakukan pengetikan

A! i,nLis ener +endeteksi aksi yang diberikan dari komponen..

Method
void actionJerformed#Bction3vent e$ +engetahui Bction yang dilakukan.

Boba perhatikan program ketujuh dan kedelapan perbedaannya dan jalankan.


//program ketuju% import javax.swing.*; import java.awt.*; import java.awt.event.*; class grap'' extends !rame implements EouseEotion+istener6 Eouse+istener6 Ke;+istener " 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 $

$;

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 &

itemDandler itemDandler , new itemDandler#$; panelF.add#cmd)ave$; cmd)ave.addBction0istener#itemDandler$; panelF.add#cmd3nd$; cmd3nd.addBction0istener#itemDandler$;

private class itemDandler implements Bction0istener" pu(lic void action<erformed#Bction3vent e$"

52

//menangkap nama o(jek 2(ject o(j,e.get)ource#$; if#o(j,,cmd)ave$" A & else ")Gstem.exit #8$;& & &

pu(lic static void main#)tring args*+$" new frameF1#$; & &

51

La i$an ; . "uatlah gambar buah pear dengan grafik 2 dibawah ini A

#ambar 3.2 "uah )ear


/* *1iam(il dan dimodifikasi dari www.sun.com *Menggam(ar (ua% pear dengan model *Constructive Brea @eometrG #C)@$ met%ods9 * add9 intersect9 and su(tract. */ import import import import import java.awt.*; java.awt.event.*; java.awt.font.*; java.awt.geom.*; javax.swing.*; !rame "

pu(lic class <ear extends

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 horiIontal slider menggunakan model "ounded(ange+odel.


JSlider#int orientation$

+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.

Be&era1a Method /an2 $ar-s *ike a$-i


5nt getEaximum#$

+endapatkan nilai maCimum.


5nt getEinimum#$

+endapatkan nilai minimum.

53

5nt get.rientation#$

+endapatkan model model oreintasi slider, apakah berbentuk verti!al atau horiIontal.
int getPalue#$

+endapatkan nilai aktif.


void setEaximum#int maximum$

+erubah nilai maCimum.


void setEinimum#int minimum$

+erubah nilai minimum.


void set.rientation#int orientation$

+erubah model oreintasi %1G?D(6$B1> atau 2G8:($R:*61>&.


void setPalue#int n$

+erubah nilai aktif. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLslider.html

#ambar E.1. Jslider

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

La i$an < . "uatlah ,onversi dari Bentimeter, $n!h dan 'eet

#ambar E.2 . J lider Bm, $n!h, Dan 'eet

32

BAB VII

JMen-Bar( JMen-( JP,1-1Men-( JMen-I e.( JTe) Area( *an B,)


,ali ini !ontoh program menggunakan J+enu"ar, J)opup+enu, J+enu$tem, J6eCt1rea dan layout "oC komponen untuk membuat program editor teks berita. JMen-Bar Untuk mengimplementasikan menu pada form dapat menggunakan komponen J+enu"ar

Constructor
JEenu*ar#$

+embuat "ar +enu.

Be&era1a Method /an2 $ar-s *ike a$-i


Menu add# Menu c$

+enambah objek Menu ke Menu/ar


Menu getEenu#int index$

+endapat posisi menu yang disesuaikan dengan parameter indeC.


int getEenu-ount#$

+endapatkan jumlah menu.


(oolean isSelected#$

+elakukan penge!ekan apakah menu yang dimaksud dalam posisi terpilih.


void setSelected#Component sel$

+engaktifkan menu yang diinginkan. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLmenu.html JMen-

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 tanpa teks.


JEenu#Bction a$

+embuat menu dengan penambahan Bction.


JEenu#)tring s$ +embuat Menu

dengan teks. dan penandaan tear.o"" !enu atau tidak.

JEenu#)tring s9 (oolean ($ +embuat Menu dengan teks

Be&era1a Method /an2 $ar-s *ike a$-i


Menu5tem add#Bction a$

+embuat menu item dengan penambahan Bction objek dan menambahkannya pada akhir menu.
Component add#Component c$

+enambahkan komponen pada akhir menu.


Component add#Component c9 int index$

+enambah komponen pada posisi %indeC& tertentu.


Menu5tem add# Menu5tem menu5tem$ +enambah Menu5tem Menu5tem add#)tring s$

pada akhir menu.

+enambah Menu5tem dengan teks dan menambahnya pada akhir menu.


void addEenu+istener#Menu0istener l$

+enambahkan listener pada menu.


void addSeparator#$

+enambahkan garis separator pada akhir menu.


5nt get,ela;#$

+endapatkan nilai delay menu


Menu5tem get1tem#int pos$ +endapat Menu5tem int get1tem-ount#$

pada posisi tertentu.

+endapatkan jumlah Menu5tem pada menu termasuk dengan garis separator.


Menu5tem insert#Bction a9 int pos$

35

+enyisipkan Bction pada posisi tertentu.


Menu5tem insert# Menu5tem mi9 int pos$ +enyisipkan Menuitem pada posisi tertentu. Eoid insert#)tring s9 int pos$

+enyisipkan menu tertentu dengan teks pada posisi tertentu.


Eoid insertSeparator#int index$

+enyisipkan garis separator pada posisi tertentu.


(oolean isJopupEenuPisible#$

+endapatkan nilai true atau false mengenai kemungkinan popup.


(oolean isSelected#$

+endapatkan nilai true apabila menu tersebut dalam posisi terpilih %highlighted&.
void remove#Component c$

+enghapus komponen c dari menu.


Eoid remove#int pos$

+enghapus Menu5tem pada posisi tertentu pada menu.


void remove# Menu5tem item$ +enghapus Menu5tem void removeAll#$

dari menu.

+engapus semua menu item dari menu.


Eoid set,ela;#int d$

+emberikan waktu delay ets the suggested delay before the menuSs <opupMenu is popped up or down.
void setEenu+ocation#int x9 int G$

+enempatkan lokasi J dan H dari pop menu.


void setJopupEenuPisible#(oolean ($

+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.

Be&era1a Method /an2 $ar-s *ike a$-i


Menu5tem add#Bction a$

+enambahkan Bction object.


Menu5tem add# Menu5tem menu5tem$ +enambahkan Menu5tem

dan ditempatkan pada

posisi terakhir menu.


Menu5tem add#)tring s$

+enambahkan menu teks dan ditempatkan pada posisi akhir menu.


void addSeparator#$

+enambahakan garis separator pada akhir menu.


)tring get+abel#$

+endapatkan label popup menu


void insert#Bction a9 int index$ +enyisipkan Bction pada posisi

tertentu.

void insert#Component component9 int index$

$nserts the spe!ified !omponent into the menu at a given position.


(oolean isPisible#$

+endaptkan nilai true jika pada posisi tampil.


void remove#int pos$

+enghapus komponen pada posisi tertentu.


void set+abel#)tring la(el$

+emberikan label pada popup menu.


void set+ocation#int x9 int G$

+enempatkan lokasi popup menu di koordinat J dan H


void setJopupSi7e#1imension d$

+emberikan ukuran berdasarkan dimensi.


void setJopupSi7e#int widt%9 int %eig%t$

+emberikan ukuran berdasarkan lebar dan tinggi.


void setSelected#Component sel$

+enempatkan sel aktif pada komponen tertentu.

3E

void setPisible#(oolean ($

+enampilkan popup menu jika parameter input adalah true.


void s#ow#Component invoker9 int x9 int G$

+enampilkan popup menu berdasarkan koordinat J dan H. JMen-I e. +emberikan komponen pada Jmenu dan J)opup+enu

Constructor
JEenu1tem#$

+embuat Menu5tem tanpa teks dan gambar ikon.


JEenu1tem#Bction a$ +embuat Menu5tem JEenu1tem#5con icon$ +embuat Menu5tem JEenu1tem#)tring text$ +embuat Menu5tem

dengan Bction. dengan gambar ikon. dengan teks. gambar ikon. keyboard mnemoni!.

JEenu1tem#)tring text9 5con icon$ +embuat Menu5tem dengan teks dan

JEenu1tem#)tring text9 int mnemonic$ +embuat Menu5tem dengan teks dan short!ut

Be&era1a Method /an2 $ar-s *ike a$-i


void set/nabled#(oolean ($

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 doc$ +embuat TextBrea dengan

model dokumen. sesuai dengan

J2extArea#1ocument doc9 )tring text9 int rows9 int columns$ +embuat TextBrea dengan model dokumen, teks, baris dan kolom

parameter yang diberikan.


J2extArea#int rows9 int columns$ +embuat TextBrea dengan baris J2extArea#)tring text$ +embuat TextBrea

dan kolom yang sesuai dengan parameter input.

dengan teks didalamnya. 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

#$opup%enu(); #%enu&te'("(op)"); #%enu&te'("(ut"); #%enu&te'("$aste");

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

La i$an = . 6ampilkan gambar ikon dimasing.masing menu

#ambar <.4 +enu 'ile Dengan $!on

#ambar <.5 +enu Ddit Dengan $!on

#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

#ambar 9.1. $nternal'rame

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

#ambar 9.2 J'rame dengan berapa J$nternal'rame

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#$

+embuat Ta((ed<ane kosong dengan posisi atasL6:).


J2abbedJane#int ta(<lacement$ +embuat Ta((ed<ane kosong dengan posisi sesuai dengan parameter Ta((ed<ane.T2<, Ta((ed<ane./2TT2M, Ta((ed<ane.03!T, atau Ta((ed<ane.C5@DT. J2abbedJane#int ta(<lacement9 int ta(0aGout<olicG$ +embuat Ta((ed<ane kosong dengan posisi sesuai dengan parameter Ta((ed<ane.T2<, Ta((ed<ane./2TT2M, Ta((ed<ane.03!T, atau Ta((ed<ane.C5@DT (eserta model policy

input

input

Be&era1a Me $,* /an2 $ar-s *ike a$-i


void add2ab#)tring title9 Component component$

+enambah tab dengan judul, dan tanpa gambar ikon.


void add2ab#)tring title9 5con icon9Component component$

+enambah tab dengan judul dan gambar $kon beserta komponennya.


void add2ab#)tring title9 5con icon9 Component component9 )tring tip$

+enambah tab dengan judul dan gambar $kon beserta komponennya dan teks tip.
int getSelected1ndex#$

+endapatkan indeC aktif dari tabbpane


int get2ab-ount#$

+endapatkan jumlah tab dari ta((edpane.


)tring get2itleAt#int index$

<2

+endapatkan teks judul sesuai indeC


void insert2ab#)tring title9 5con icon9 Component component9 )tring tip9 int index$

+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$

+enghapus tab dan komponen didalamnya pada indeC tertentu.


void removeAll#$

+enghapus semua tab pada ta((edpane.


void remove2abAt#int index$

+enghapus tab dan komponen didalamnya pada indeC tertentu.


void set/nabledAt#int index9 (oolean ena(led$

+engaktifkan atau menonaktifkan tab pada indeC tertentu.


void setSelected1ndex#int index$

+emberikan status terpilih pada tab tertentu.


void set2itleAt#int index9 )tring title$

+emberikan judul teks pada indeC tertentu.


void set2ool2ip2extAt#int index9 )tring toolTipText$

+emberikan tek tooltip pada tab indeC tertentu. Bontoh )enggunaan A httpALLjava.sun.!omLdo!sLbooksLtutorialLuiswingL!omponentsLtabbedpane.html

6ab 2

6ab 1

#ambar 7.1 6abbed)ane <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 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 /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

La i$an @ . "uatlah posisi tab pada posisi bawah

#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

#ambar 7.5 )osisi )ada )osisi ,anan

<5

BAB X

MODEL DESAIN TAMPILAN


)ada meteri sebelumnya, kita sebenarnya sudah menyinggung sedikit mengenai penggunaan layout. )ada pembahasan dibawah selanjutnya, akan dibahas seluruh model layout pada Java standar, *ull layout, JH layout pada J"uilder borland. >ayout.layout tersebut adalah sebagai berikut A B,r*erLa/,+embuat layout tampilan berdasarkan arah mata angin yaitu *:(68, D1 6, :U68, dan -D 6. NORTH 9EST +ENTER EAST SOUTH F',0La/,>ayout 'low>ayout mempunyai beberapa tampilan yaitu >D'6, BD*6D(, dan ($#86. >D'6 BD*6D( ($#86 Gri*La/,)enggunaan layout #rid>ayout dengan metode yang sama seperti saat kita menggunakan table, yaitu terkait jumlah baris dan jumlah kolom. Bontoh A . jumlah baris 2 dengan kolom 5, menggunakan perintah #rid>ayout%2,5&, yang berarti terdapat 9 %delapan& komponen yang dapat ditempatkan P o ,omponen 1, berada pada posisi baris pertama dan kolom pertama o ,omponen 2, berada pada posisi baris pertama dan kolom kedua o ,omponen 4, berada pada posisi baris pertama dan kolom ketiga o ,omponen 5, berada pada posisi baris pertama dan kolom keempat. o ,omponen 3, berada pada posisi baris kedua dan kolom pertama. o ,omponen E, berada pada posisi baris kedua dan kolom kedua. o ,omponen <, berada pada posisi baris kedua dan kolom ketiga. o ,omponen 9, berada pada posisi baris kedua dan kolom keempat. % < # = : > ; @

<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

#ambar 8oriIontal Gri*Ba2La/,-

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

#ambar 12.E. JH>ayout Bontoh program A


//program ke empat(elas B //Menggunakan 4M 0aGout import javax.swing.*; import java.awt.*; import com.(orland.j(cl.laGout.*; import java.awt.event.*; class frame1 extends !rame " 4M0aGout xM0aGout1 , new 4M0aGout#$; 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&; Com(o/ox cm(Iampus , new Com(o/ox#sIampus$; /utton cmd)ave , new /utton#$; /utton cmd3nd , new /utton#$; pu(lic frame1#$ " 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-$; t%is.getContent<ane#$.set0aGout#xM0aGout1$; l(l7ama.setText#-7ama-$; l(l)ertifikat.setText#-)ertifikat-$; l(l urusan.setText#- urusan-$; l(lIampus.setText#-Iampus-$;

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

#ambar 12.11 )roses 1khir )ersiapan $nstalasi J"uilder

9<

#ambar 12.12 )roses $nstalasi edang Dilakukan

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

#ambar 12.15 +embuat 1plikasi #U$ dengan $kon 1plikasi

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

#ambar 12.1E >angkah Wi)ard ,e 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

#ambar 12.19 >angkah )ertama )emberian nama Blass 1ppli!ation

72

7. +asukkan nama J'rame, !ontoh A frm6esting

#ambar 12.17 >angkah ,edua )emberian *ama 'rame 12. 6ekan tombol "inish pada langkah ketiga

#ambar 12.22 >angkah Wi)ard ,e 6iga

71

11. >ayar Dditor akan tampil seperti pada #ambar 12.21

E*i ,r Pr,2ra. Na.a Fi'e Ja7a

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

Pr,1er ies Dan E7en La/ar GUI (Dra2 D Dr,1"

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

#ambar 12.24 )ersiapan $nstalasi *et"eans

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

#ambar 12.2E Direktori $nstalasi *etbeans

75

5. )roses $nstalasi sedang berjalan

#ambar 12.2< $nstalasi *et"eans edang "erjalan 3. etelah )roses $nstalasi 6ekan 6ombol 'inish

#ambar 12.29 $nstalasi *etbeans 6elah elesai

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

#ambar 12.41 *ama )roje!t *et"eans

#ambar 12.42 >ayar )roje!t 6esting )ada *et"eans

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

#ambar 12.45 +emberi *ama J'rame )ada *et"eans

79

E. >ayar tampilan editor proje!t 6esting S,-r!e Pr,2ra. Dan Desain

Pa''e e (T,,'s"

Pr,6e! E)1',rer

Ins1e! ,r

La/ar GUI (Dra2 D Dr,1 "

Pr,1er ies( E7en Dan +,*e

#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

9. 6ekan tombol altO'E

122

La i$an G . "uatlah layar tampilan seperti pada #ambar 12.2E dengan menggunakan J"uilder dan *et"eans

#ambar 12.4E >atihan oal 7

121

BAB XI

Err,r E)!e1 i,n


-aktu paling ideal untuk mendeteksi adanya kesalahan pada program %error& adalah saat kompilasi program. *amun tidak semua kesalahan program dapat dideteksi pada saat itu, kesalahan justru terlihat program dijalankan atau digunakan. %tjava hal 217&. ebagai !ontoh, untuk program yang dibuat pada saat mesin !etak atau printer sedang on, program dapat melakukan pen!etakan dengan baik saat kondisi itu. *amun apabila mesin !etak sedang dalam posisi o"", maka program tidak dapat melakukan pen!etakan, kemudian mengirimkan sinyal kesalahan. 1pabila sinyal kesalahan tersebut tidak ditangkap maka program akan terhenti. 8al tersebut tidak akan terjadi apabila si pengembang program menangkap sinyal tersebut atau melewatinya. Bontoh penggunaan lainnya adalah A . perbedaan variable . penggunaan file dan direktori . dan lain.lain. )ada Java standard, beberapa error yang harus diketahui adalah sebagai berikut A . . . . . . . . . . . . . . . . . . . . . . . . . java.awt.AWTException java.lang.ClassNotFoundException java.lang.CloneNotSupportedException java.io.IOException java.io.EOFException java.io.FileNotFoundException java.io.InterruptedIOException java.net.MalformedURLException java.net.ProtocolException java.net.SocketException java.io.UTFDataFormatException java.net.UnknownHostException java.net.UnknownServiceException java.lang.IllegalAccessException java.lang.InstantiationException java.lang.InterruptedException java.lang.NoSuchMethodException java.lang.RuntimeException java.lang.ArithmeticException java.lang.ArrayStoreException java.lang.ClassCastException java.util.EmptyStackException java.lang.IllegalArgumentException java.lang.IllegalThreadStateException java.lang.NumberFormatException

122

. . . . . . . .

java.lang.IllegalMonitorStateException java.lang.IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException java.lang.StringIndexOutOfBoundsException java.lang.NegativeArraySizeException java.util.NoSuchElementException java.lang.NullPointerException java.lang.SecurityException

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

$ & &

-e.getMessage#$J - K e.getMessage#$ $; )Gstem.out.println# -e.to)tring#$J - K e.to)tring#$ $; )Gstem.out.println#-e.print)tackTrace#$J-$; e.print)tackTrace#$;

Dengan hasil program A


Caug%t 3xception e.getMessage#$J DereSs mG 3xception e.to)tring#$J java.lang.3xceptionJ DereSs mG 3xception e.print)tackTrace#$J java.lang.3xceptionJ DereSs mG 3xception at 3xceptionMet%ods.main

)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%&

T%row error dari g

T%row error dari f

#ambar J1.1 6hrow Drror


//program ke enam(elas pu(lic class Cet%rowing " pu(lic static void f(! t#rows /xception " )Gstem.out.println# -originating t%e exception in f#$-$; t#row new 3xception#-t%rown from f#$-$; & pu(lic static void g(! t#rows 2#rowable " trG " f#$; & catc%#3xception e$ " )Gstem.out.println# -5nside g#$9 e.print)tackTrace#$$; e.print)tackTrace#$; t#row e; & & pu(lic static void main#)tring args*+$

12E

& &

t#rows 2#rowable " trG " g#$; & catc%#3xception e$ " )Gstem.out.println# -Caug%t in main9 e.print)tackTrace#$$; e.print)tackTrace#$; &

Dengan hasil program A


originating t%e exception in f#$ 5nside g#$9 e.print)tackTrace#$ java.lang.3xceptionJ t%rown from f#$ at Cet%rowing.f#Cet%rowing.javaJR$ at Cet%rowing.g#Cet%rowing.javaJ1'$ at Cet%rowing.main#Cet%rowing.javaJ'H$ Caug%t in main9 e.print)tackTrace#$ java.lang.3xceptionJ t%rown from f#$ at Cet%rowing.f#Cet%rowing.javaJR$ at Cet%rowing.g#Cet%rowing.javaJ1'$ at Cet%rowing.main#Cet%rowing.javaJ'H$

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<

"andingkan dengan program ke.delapan belas A


//program ke delapan(elas //mrnggunakan !inallG class )witc%' " (oolean state , false; (oolean read#$ " return state; & void on#$ " state , true; & void off#$ " state , false; & & pu(lic class Nit%!inallG " 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(!; $ catc#(1llegalArgument/xception e! { S;stem.out.println((1./xception(!; $ finall; { sw.off(!; $ $ &

)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

La i$an %H 1. 1pakah penulisan program di bawah ini diperbolehkan =


tr; { $ finall; { $

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

& catc%#3xception exception$" )Gstem.out.println#exception.to)tring#$$; & )Gstem.out.println#name K - finis%edT-$; & &

- 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

+1J0)($:($6HG12 Bontoh program A


//program ke duapulu%satu //programprioritG class B extends T%read" pu(lic void run#$" )Gstem.out.println#-T%read B started- $; for#int i,1;i>,H;iKK$" )Gstem.out.println#-Lt !rom T%readBJ i, -Ki$; & )Gstem.out.println#-3xit from B-$; & & class / extends T%read" pu(lic void run#$" )Gstem.out.println#-T%read / started-$; for#int j,1;j>,H;jKK$" )Gstem.out.println#-Lt !rom T%read/J j, -Kj$; & )Gstem.out.println#-3xit from /-$; & & class C extends T%read" pu(lic void run#$" )Gstem.out.println#-T%read C started-$; for#int k,1;k>,H;kKK$" )Gstem.out.println#-Lt !rom T%readCJ k, -Kk$; & )Gstem.out.println#-3xit from C-$; & & class T%read<rioritG" pu(lic static void main#)tring args*+$" B t%readB,new B#$; / t%read/,new /#$; C t%readC,new C#$; t#readA.setJriorit;(2#read.4.9E3J91.912?!; t#read*.setJriorit;(2#read.E143J91.912?!; t#read-.setJriorit;(2#read.EA03J91.912?!; t%readB.start#$; t%read/.start#$; t%readC.start#$; )Gstem.out.println#-3nd of main t%read-$;

& &

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*

account #s%ared o(ject$

3,-rT$rea*

HerT$rea* #ambar 12.4 hared :bje!t

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

Q 3nUuire 6 Q 3nUuire Q Q 3nUuire R Q 3nUuire P = /nTuire 15 !inis%ed executing

,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$; &

&

Jalankan program dan lihat hasilnya A


1 deposit 1 ' deposit ' F deposit F H deposit H ; deposit ; A O; deposit ; OH deposit 6 OF deposit Q O' deposit R O1 deposit P 8 deposit 18 8 3nUuire 1 8 3nUuire '

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

#ambar 12.5 Jam

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

e@uential 1!!ess T +enyimpan ke 6arget

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,

dengan parameter objek !ile untuk

pemba!aan.
File9eader#!ile1escriptor fd$ +embuat objek !ileCeader (aru dengan parameter !ile1escriptor File9eader#)tring file7ame$ +embuat objek !ileCeader (aru dengan parameter string

Me $,*s &a0aan *ari !'ass 6a7a8i,8In1- S rea.Rea*er


close9 get3ncoding9 read9 read9 readG

Me $,*s &a0aan *ari !'ass 6a7a8i,8Rea*er


mark9 mark)upported9 read9 reset9 skip

Fi'e9ri er

Constructor
File@riter#!ile file$

+embuat objek 'ile-riter dengan parameter objek 'ile.


File@riter#!ile file9 (oolean append$

+embuat objek 'ile-riter dengan parameter 'ile dan boolean append.


File@riter#!ile1escriptor fd$

+embuat objek 'ile-riter dengan parameter objek filedes!riptor.


File@riter#)tring file7ame$

+embuat objek 'ile-riter dengan nama file.


File@riter#)tring file7ame9 (oolean append$

+embuat objek 'ile-riter dengan parameter nama file dan boolean append.

124

Me $,*s &a0aan *ari !'ass 6a7a8i,8O- 1- S rea.9ri er


close9 flus%9 get3ncoding9 write9 write9 write

Me $,*s &a0aan *ari !'ass 6a7a8i,89ri er


write9 write

Me $,*s &a0aan *ari !'ass 6a7a8'an28O&6e!


clone9 eUuals9 finali:e9 getClass9 %as%Code9 notifG9 notifGBll9 to)tring9 wait9 wait9 wait

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

& &

& catc% #523xception e$ " )Gstem.err.println#-C%ecked52TestJ - K e$; )Gstem.exit#O1$; & )Gstem.out.println#txtmsg $;

Bontoh program byte stream A


//program kedua pulu% empat //(Gte stream import java.io.*; pu(lic class dostream " pu(lic static void main#)tring*+ args$ t%rows 523xception " trG " !ile5nput)tream in , new !ile5nput)tream# -farrago.txt$; !ile2utput)tream out , new !ile2utput)tream# -outagain.txt$; int (Gtelengt%,in.availa(le#$; for # int (Gtecount,8;(Gtecount>(Gtelengt%; (GtecountKK $" out.write#in.read(!$; & 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$; & & &

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.

Be&era1a Method 3an2 1er'- *ike a$-i


Eoid close#$

+enutup aktivitas (andom1!!ess'ile.


long getFileJointer#$

+endapat nilai pointer.


long lengt##$

+endapat nilai ukuran panjang.


int read#$

+emba!a data byte.


int read#(Gte*+ ($

+emba!a data byte kemudian dimasukkan kedalam array.


int read#(Gte*+ (9 int off9 int len$

+emba!a panjang byte yang ditentukan parameter

12E

kemudian disimpan ke dalam array.


(oolean read*oolean#$

+emba!a tipe "oolean.


(Gte read*;te#$

+emba!a dengan model eight.bit.


c%ar read-#ar#$

+emba!a karakter Uni!ode.


dou(le read,ouble#$

+emba!a tipe data dou(le.


float readFloat#$

+emba!a tipe data float.


int read1nt#$

+emba!a tipe data 42.bit integer.


)tring read+ine#$

+emba!a baris berikutnya.


long read+ong#$

+emba!a tipe data E5.bit integer.


s%ort readS#ort#$

+emba!a tipe data 1E.bit angka.


)tring read)2F#$

+emba!a tipe data string.


void see'#long pos$

+en!ari posisi pointer offset dari posisi awal dari file sampai akhir.
void write#(Gte*+ ($

+enyimpan tipe data byte array.


void write#(Gte*+ (9 int off9 int len$

+enyimpan tipe data byte array dengan panjang tertentu dengan posisi pointer.
void write#int ($

+enyimpan tipe data byte dan integer.


void write*oolean#(oolean v$ +nyimpan tipe data (oolean. void write*;te#int v$

+enyimpan dengan model one.byte value.


void write*;tes#)tring s$

+enyimpan tipe data string.


void write-#ar#int v$

+enyimpan tipe data c%ar.

12<

void write-#ars#)tring s$

+enyimpan tipe data string.


void write,ouble#dou(le v$

+enyimpan tipe data double.


void writeFloat#float v$

+enyimpan tipe data float.


void write1nt#int v$

+enyimpan tipe data integer.


void write+ong#long v$

+enyimpan tipe data long.


void writeS#ort#int v$

+enyimpan tipe data s%ort.


void write)2F#)tring str$

+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.


*uffered9eader#Ceader in9 int s:$

+embuat buffer dari model karakter kebentuk standar buffer dengan panjang tertentu.

Be&era1a Method /an2 1er'- *ike a$-i


int read#$

+emba!a single karakter


5nt read#c%ar*+ c(uf9 int off9 int len$

+emba!a berdasarkan panjang dan pointer yang ditentukan.


)tring read+ine#$

+emba!a perbaris dari teks. Bontoh program A


//program ke duapulu% enam //(uffred reader import java.io.*; pu(lic class do(uffer " 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$;

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

La i$an %# (ubahlah program sepuluh dengan akses file ]]

#ambar 14.3 #ui dan akses file

141

BAB XIV

Da a&ase (6*&! D ./sK'"


)engertian dari database adalah sekumpulan informasi yang terorganisir sehingga mudah diakses dan kelola. Dimana database tersebut dapat menyimpan informasi dengan tipe data tring, *umerik, Date, dan tipe data lainnya. Untuk melakukan perintah manipulasi data, user dapat menggunakan bahasa tru!ture ^uery >anguage % ^>&. "erbagai ma!am database yang telah ada dalam dunia aplikasi adalah seperti :ra!le, D"2, +y @l, dan lain.lain. )ada buku ini, yang dibahas adalah bagaimana bahasa pemrograman Java dapat berinteraksi dengan database +y @l dengan menggunakan database !onne!tor %jdb!&. ebelum lebih jauh membahas mengenai program Java dan konektor, lebih dulu kita mengenal sedikit mengenai database. Untuk lebih lengkapnya kita dapat merujuk pada mata kuliah sistem database. 6ipe data yang umum pada database adalah A tring Bontoh A Bhar, ?ar!har *umeri! Bontoh A "yte, $nteger, ingle, Double, 'loat Date Bontoh A Date, 6ime B>:" 4Character 0ar e Object&/6DJ6 ">:" %3inary 0ar e Object& '$>D A uara, #ambar, ?ideo, Dan >ain 6erdapat penggunaan relasi sebagai penghubung antara satu tabel degan tabel lainnya beserta model.model #ey pada tabel di database. +odel.model #ey tersebut adalah A Primar$ %e$ Juga Disebut Pri!ary -ey*ord berfungsi sebagai 'ield ,un!i dari 6abel dan "ersifat Uni2ue %6idak 1da Duplikasi&, Bontoh A *$+ pada +ahasiswa 1tau *omor (ekening )ada 1plikasi )erbank.an Secondar$ %e$ 'ield ,un!i Dari 6abel etelah Pri!ary -ey, Bontoh A *omor 16+ pada )erbank.an Dapat Digunakan ebagai e!ondary ,ey etelah *omor (ekening Candidat %e$ ,emungkinan )emakaian 'ield ebagai ,un!i Dari ebuah 6abel &oreign %e$ +erupakan 'ield Dari 6abel, 6api 'ield 6ersebut +erupakan Pri!ary -ey )ada 6abel >ainnya

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

#ambar 15.2 6abel mahasiswa +enghapus tabel mahasiswa


1rop Ta(le >7ama Ta(el?

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

+odel +odel variabel dari database mys@l A *umeri!

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

#ambar 15.3 JD"B Driver 149

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.

Be&era1a Method /an2 $ar-s *ike a$-i


void add*atc##)tring sUl$

+enambahkan perintah ^> kedalam list o" co!!ands.


void cancel#$

+embatalkan perintah ^> jika D"+ dan driver mengagalkan perintah.


void clear*atc##$

+enghapus perintah )tatement obje!tSs pada current

147

list o" &50 co!!ands.


void clear@arnings#$

+enghapus semua laporan peringatan dari )tatement obje!t.


void close#$

+enutup )tatement obje!t and JD"B.


(oolean execute#)tring sUl$

+engeksekusi perintah ^>, yang dapat terdiri dari beberapa perintah.


int*+ execute*atc##$

+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#$

+enndapatkan Connection obje!t dari )tatement obje!t.


int getFetc#,irection#$

+enarik data dari table yang dapat digunakan oleh resultsets.


int getFetc#Si7e#$

+endapatkan jumlah baris dari table database untuk penggunaan Cesult)et.


5nt getWuer;2imeout#$

+endapatkan nilai timeout dari @uery )tatement obje!t


Cesult)et get9esultSet#$

+endapatkan hasil proses untuk penggunaan objek Cesult)et.


)Y0Narning get@arnings#$

+endapatkan laporan peringatan )tatement obje!t.


void set-ursor4ame#)tring name$

+endapatkan nama kursor.


void setWuer;2imeout#int seconds$

+engatur waktu dalam hitungan detik untuk pengaksesan. 6a7a8sK'8Res-' Se

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.

Be&era1a Method /an2 $ar-s *ike a$-i


(oolean absolute#int row$

+enempatkan kursor pada baris yang disesuaikan parameter


void after+ast#$

+enempatkan kursor setelah akhir baris table.


void beforeFirst#$

+enempatkan kursor sebelum awal baris table.


void cancel9ow)pdates#$

+embatalkan perubahan baris.


void clear@arnings#$

+enghapus laporan peringatan.


void close#$

+enutup koneksi Cesult)et dan JD"B


void delete9ow#$

+enghapus baris pada kursor aktif.


int find-olumn#)tring column7ame$

+en!ari kolom tertentu.


(oolean first#$

+enempatkan kursor pada posisi awal baris table.


5nput)tream getAsciiStream#int column5ndex$

+endapatkan tipe data as!ii dengan parameter indeC kolom.


5nput)tream getAsciiStream#)tring column7ame$

+endapatkan tipe data as!ii dengan parameter nama kolom.


/ig1ecimal get*ig,ecimal#int column5ndex$ +endapatkan tipe data java.mat%./ig1ecimal

dengan

parameter indeks kolom.


/ig1ecimal get*ig,ecimal#)tring column7ame$ +endapatkan tipe data java.mat%./ig1ecimal

dengan

parameter nama kolom.


5nput)tream get*inar;Stream#int column5ndex$

+endapatkan tipe data "inary tream dengan parameter indeks kolom.

151

5nput)tream get*inar;Stream#)tring column7ame$

+endapatkan tipe data "inary tream dengan parameter nama kolom.


/lo( get*lob#int i$

+endapatkan tipe data ">:" dengan parameter indeks kolom.


/lo( get*lob#)tring col7ame$

+endapatkan tipe data ">:" dengan parameter nama kolom.


(oolean get*oolean#int column5ndex$

+endapatkan tipe data boolen dengan parameter indeks kolom.


(oolean get*oolean#)tring column7ame$

+endapatkan tipe data "oolean dengan parameter nama kolom.


(Gte get*;te#int column5ndex$

+endapatkan tipe data byte dengan parameter indeks kolom.


(Gte get*;te#)tring column7ame$

+endapatkan tipe data byte dengan parameter nama kolom.


(Gte*+ get*;tes#int column5ndex$

+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$

+endapatkan tipe data B>:" pada baris aktif.


Clo( get-lob#)tring col7ame$

+endapatkan tipe data B>:" dengan parameter nama kolom.


1ate get,ate#int column5ndex$

+endapatkan tipe data date dengan parameter indeks kolom.

152

1ate get,ate#)tring column7ame$

+endapatkan tipe data date dengan parameter nama kolom.


dou(le get,ouble#int column5ndex$

+endapatkan tipe data double dengan parameter indeks kolom.


dou(le get,ouble#)tring column7ame$

+endapatkan tipe data double dengan parameter nama kolom.


float getFloat#int column5ndex$

+endapatkan tipe data float dengan parameter indeks kolom.


float getFloat#)tring column7ame$

+endapatkan tipe data float dengan parameter nama kolom.


int get1nt#int column5ndex$

+endapatkan tipe data integer dengan parameter indeks kolom.


int get1nt#)tring column7ame$

+endapatkan tipe data integer dengan parameter nama kolom.


long get+ong#int column5ndex$

+endapatkan tipe data long degan parameter indeks kolom.


long get+ong#)tring column7ame$

+endapatkan tipe data kolom dengan parameter nama kolom..


int get9ow#$

+endapatkan nilai baris aktif.


s%ort getS#ort#int column5ndex$

+endapatkan tipe data short dengan parameter indeks kolom.


s%ort getS#ort#)tring column7ame$

+endapatkan tipe data short dengan parameter nama kolom.


)tring getString#int column5ndex$

+endapatkan tipe data string dengan parameter indeks kolom.


)tring getString#)tring column7ame$

+endapatkan tipe data string dengan parameter nama kolom.

154

Time get2ime#int column5ndex$

+endapatkan tipe data time dengan parameter indeks kolom.


Time get2ime#)tring column7ame$

+endapatkan tipe data time dengan parameter nama kolom.


)Y0Narning get@arnings#$

+endapatkan laporan peringatan.


void insert9ow#$

+enambah baris kolom.


(oolean isAfter+ast#$

+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#$

+endapatkan nilai true jika posisi kursor pada akhir baris.


(oolean last#$

+enempatkan posisi kursor pada akhir baris table.


(oolean next#$

+enempatkan kursor pada baris berikutnya.


(oolean previous#$

+enempatkan kursor sebelum kursor aktif.


void refres#9ow#$

+emanggil ulang data pada baris table.


/oolean row,eleted#$

+endapatkan nilai true apabila baris data telah terhapus.


/oolean row1nserted#$

+endapatkan nilai true apabila baris data telah terisi.


(oolean row)pdated#$

+endapatkan nilai true apabila baris data telah berupah.


Eoid updateAsciiStream#int column5ndex9 5nput)tream x9 int lengt%$

+engubah 1s!ii stream dengan parameter indeks kolom, $nputstream dan panjangnya.

155

void updateAsciiStream#)tring column7ame9 5nput)tream x9 int lengt%$

+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 indeks kolom dan nilai ">:".


void update*lob#)tring column7ame9 /lo( x$

+engubah ">:" dengan parameter nama kolom dan nilai java.sUl./lo( value.
void update*oolean#int column5ndex9 (oolean x$

+engubah boolen dengan parameter indeks kolom dan nilai "oolean.


void update*oolean#)tring column7ame9 (oolean x$

+engubah "oolean dengan parameter nama kolom dan nilai "oolean.


void update*;te#int column5ndex9 (Gte x$

+engubah byte dengan parameter indeks kolom dan nilai byte.


void update*;te#)tring column7ame9 (Gte x$

+engubah byte dengan parameter nama kolom dan nilai byte.


void update-#aracterStream#int column5ndex9 Ceader x9 int lengt%$

+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$

mengubah B>:" dengan parameter indeks kolom dan nilai a java.sUl.Clo(.


void update-lob#)tring column7ame9 Clo( x$

+engubah B>:" dengan parameter nama kolom dan nilai java.sUl.Clo(.


void update,ate#int column5ndex9 1ate x$

+engubah date dengan parameter indeks kolom dan nilai java.sUl.1ate.


void update,ate#)tring column7ame9 1ate x$

+erubah date dengan parameter nama kolom dan nilai


java.sUl.1ate. void update,ouble#int column5ndex9 dou(le x$

+engubah Double dengan parameter indeks kolom dan nilai double.


void update,ouble#)tring column7ame9 dou(le x$

+engubah double dengan parameter nama kolom dan nilai double.


void updateFloat#int column5ndex9 float x$

+engubah 'loat dengan parameter indeks kolom dan nilai float.


void updateFloat#)tring column7ame9 float 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$

+engubah integer dengan parameter nama kolom dan nilai integer.


void update+ong#int column5ndex9 long x$

+engubah long dengan parameter indeks kolom dan nilai long.


void update+ong#)tring column7ame9 long x$

+engubah >ong dengan parameter nama kolom dan nilai long.


void update4ull#int column5ndex$

+emberikan nilai null dengan parameter indeks kolom.

15E

void update4ull#)tring column7ame$

+emberikan nilai null dengan parameter nama kolom dengan parameter nama kolom.
void update9ow#$

+enyimpan perubahan pada baris data table.


void updateS#ort#int column5ndex9 s%ort x$

+erubah short dengan parameter indeks kolom dan nilai short.


void updateS#ort#)tring column7ame9 s%ort x$

+erubah short dengan parameter nama kolom dan nilai short.


void updateString#int column5ndex9 )tring x$

+engubah tring dengan parameter indeks kolom dan nilai string.


void updateString#)tring column7ame9 )tring x$

+erubah string dengan parameter nama kolom dan nilai string.


void update2ime#int column5ndex9 Time x$

+erubah time dengan parameter indeks kolom dan nilai java.sUl.Time.


void update2ime#)tring column7ame9 Time x$

+erubah time dengan parameter indeks kolom dan nilai


java.sUl.Time. (oolean was4ull#$

+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#$;

)indah ke (e!ord sebelumnya


C).previous#$;

)indah ke (e!ord pertama


C).first#$;

)indah ke (e!ord terakhir


C).last#$;

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.<.

#ambar 15.E. truktur tabel mahasiswa

159

#ambar 15.< 6ampilan #ui dengan menggunakan database

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 rdBI , new Cadio/utton rdTI , new

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

rec!irst#$; & catc% #3xception e$" )Gstem.out.println#e.to)tring#$$; & & &

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

#null9 -1ata 1i 1alam Ta(el Iosong -9 -Ta(le - K s!ilter9 2ption<ane.<0B576M3))B@3 & $;

&

& 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;

pu(lic static void main#)tring args*+$" new frame'F#$; & &

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

#ambar 13.1 >ayar )entaho (eport -iIard 137

<. 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

end$ S end$ S end$

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

#ambar 13.5 6ahap ,e 6iga )embuatan >aporan +enggunakan )entaho

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

15. ,etiklah program dibawah ini untuk men!etak data


//package testing; //printCeport.java import java.awt.Color; import java.awt.event.NindowBdapter; import java.awt.event.Nindow3vent; import java.awt.geom.<oint'1; import java.net.*; import import import import import java.sUl.Connection; java.sUl.Cesult)et; java.sUl.)tatement; java.sUl.1riverManager; java.sTl.9esultSetEeta,ata;

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

#ambar 13.< >aporan +enggunakan J'ree(eport

1E<

BAB XVI

JA9ABAN SOAL LATIHAN


Ja0a&an La i$an % 4

#ambar 1E.1 (an!angan #rafik 2D "endera +erah )utih


//lati%an 1 import javax.swing.*; import java.awt.*; class grap1 extends Canvas " pu(lic void paint #@rap%ics g$ " g.setColor#Color.C31$; g.fillCect#;89F89'889;8$; g.setColor#Color.ND5T3$; g.fillCect#;89R89'889;8$; g.setColor#Color./0.3$; g.fill2val#H89'Q918918$; g.fillCect#H89F891891;8$; g.setColor#Color.M3002N$; g.set!ont#new !ont#-Ta%oma-9!ont./2019'8$$; g.draw)tring#-M3C13IB-918891;8$; g.setColor#Color.@C337$; g.set!ont#new !ont#-BC5B0-9!ont./201918$$;

1E9

g.draw)tring#-1Q Bgustus 1PH; O '88H-9P891Q8$; & &

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#$;

&

pu(lic static void main#)tring args*+$ " new grap11#$; &

1E7

Ja0a&an La i$an # . $!on pada frame


t#is.set1con1mage(2ool'it.get,efault2ool'it(!.get1mage( Dnama file imageF! !;

*im A 7311322145
private J2extField txt4im " new J2extField( (B<11<5518>(615 !;

Btau
txt4im.set2ext((B<11<5518>(!;

*ama A -indu #ata


private J2extField txt4ama " new J2extField( (@indu :ata(6 %5 !;

D A Bhe!ked
private J-#ec'*ox c#S, " new J-#ec'*ox((S,(6true!;

atau
c#S,.setSelected(true!;

+) A Bhe!ked private J-#ec'*ox c#SEJ " new J-#ec'*ox((SEJ(6true!; atau


c#SEJ.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

private J9adio*utton rd21 " new J9adio*utton((21(6 true!;

Btau
rd21.setSelected(true!;

$!on )ada 6ombol ave


cmdSave.set1con(new 1mage1con(Dnama file imageF!!;

$!on )ada 6ombol Dnd


cmd/nd.set1con(new 1mage1con(Dnama file image!!;

&hort -ey ); )ada 6ombol ave


cmdSave.setEnemonic(XJX!;

&hort -ey ; )ada 6ombol Dnd


cmd/nd.setEnemonic(XSX!;

+,n ,$ 1r,2ra. 'a i$an #


import import import import javax.swing.*; javax.swing.event.*; java.awt.*; java.awt.event.*;

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

grp grp grp grp

urusan.add#rdT5$; urusan.add#rdM5$; urusan.add#rdBI$; 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$; 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 :

#ambar 1E.2 (an!angan >ayar 8and)hone


//di am(il 1imodifikasi dari //(uku tuntunan pemrograman java jilid' //ole% Cangsang <urnama //%alaman 1Q6 O 1QR //lati%an Fa import javax.swing.*; import java.awt.*; class frameH1 extends !rame " private Container konten , new Container#$; private <anel panel61 , new <anel#$; private <anel panel6' , new <anel#$; private <anel panel6F , new <anel#$; private <anel panel6H , new <anel#$; private <anel panel6; , new <anel#$; private <anel panel66 , new <anel#$; private <anel panel6Q , new <anel#$; frameH1#$ " super #-Dand <%one-$; set1efaultClose2peration# !rame.345T6276C02)3$; set)i:e#'889'F8$; set0ocation#1889188$; //desain panel 19 tom(ol Ges panel61.set0aGout#new /order0aGout#$$; panel61.add#new /utton#-Mes-$9 /order0aGout.N3)T $; panel61.add#new <anel#$9 /order0aGout.C37T3C$;

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#$; & &

Ja0a&an La i$an :&4

#ambar 1E.4 (an!angan >ayar ,onversi uhu Rumus


!a%ren%eit Ielvin Celius Ielvin Celcius !a%ren%eit , , , , , , #Celcius * 1.R$ K F' Celcius K 'QF.1; #!a%ren%eit O F'$ * 8.;;;; #!a%ren%eit O F'$ * 8.;;;; K 'QF.1; Ielvin ^ 'QF.1; ##Ielvin O 'QF.1;$*1.R$KF';

//lati%an F( import import import import javax.swing.*; java.awt.*; javax.swing.event.*; java.awt.event.*;

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<<

private private private private private

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

Ja0a&an La i$an ; . )enggunaan J'rame ditambah dengan implements +ouse>ister


pu(lic class <ear extends !rame implements Eouse+istener

1ktifkan +ouse listener pada J'rame


Jear p " new Jear(!; p.addEouse+istener(p!;

)osisi J dan H ditempatkan pada saat mouse !li!k


public void mouse9eleased(Eouse/vent e! { &Qposisi gambar disesuai'an dengan Q0 V ? mouse Q& ew " e.get0(!; e# " e.get?(!; repaint(!; S;stem.out.println((Eouse 9eleased(!; $

Jawaban program se!ara keseluruhan A


/* *1iam(il dan dimodifikasi dari www.sun.com *Menggam(ar (ua% pear dengan model *Constructive Brea @eometrG #C)@$ met%ods9 * add9 intersect9 and su(tract. * */ import import import import import java.awt.*; java.awt.event.*; java.awt.font.*; java.awt.geom.*; javax.swing.*;

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

Ja0a&an La i$an <

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<

Ja0a&an La i$an = . +enambah $!on )ada +enu


DobjectF.set1con(new 1mage1con(Dnama file imageF!!;

+enambah &hort -ey +enu


DobjectF.setEnemonic(DintGc#arF!;

,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

private private private private private

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$; & & &

& pu(lic class praktek;'icon

171

"

pu(lic static void main#)tring args*+$ " new frame;'icon#$; &

&

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 $;

& &

"uatlah program Jframe sebagai 5nternal!rame1emo.java


// 7ama !ile 5nternal!rame1emo.java import javax.swing. 5nternal!rame; import javax.swing. 1esktop<ane; import javax.swing. Menu; import javax.swing. Menu5tem; import javax.swing. Menu/ar; import javax.swing. !rame; import javax.swing.IeG)troke; import java.awt.event.*; import java.awt.*; /* * 5nternal!rame1emo.java reUuiresJ * MG5nternal!rame.java

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

&

& else " //Uuit Uuit#$; &

&&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$;

&

pu(lic static void main#)tring*+ args$ " createBnd)%ow@.5#$; & &

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

UkosongK NILAI j6eCt'ield D NILAI jBhe!k"oC +) NILAI jBhe!k"oC +1 NILAI group"utton

NILAI j(adio"utton 6$ grpJurusan NILAI j(adio"utton +$ grpJurusan

NILAI j(adio"utton 1, grpJurusan NILAI j(adio"utton 6,

177

"utton#roup !mb,ampus PROPERTIES :bje!t !md ave PROPERTIES :bje!t 6eCt +nemoni! !mdDCit PROPERTIES :bje!t 6eCt +nemoni! JB-i*er

grpJurusan NILAI J!ombo"oC NILAI J"utton impan

NILAI J"utton ,eluar ,

#ambar 1E.5 6ampilan )rogram +ahasiswa J"uilder

222

6ambahkan pada method jb$nit%& di frm6esting


!.&Ka.1-s8a**I e.(O+e.1aka MasO"F !.&Ka.1-s8a**I e.(O+i'e*-2O"F !.&Ka.1-s8a**I e.(OR,)/O"F !.&Ka.1-s8a**I e.(OSa'e.&aO"F !.&Ka.1-s8se Se'e! e*In*e)(%"F

,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

&

j(5nit#$; & catc%#3xception e$ " e.print)tackTrace#$; &

//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.3 6ampilan )rogram +ahasiswa *et"eans

#ambar 1E.E +engganti >ayout )ada >ayar +engganti layout layar dengan meng.clic# kanan pada layar kemudian pilih set >ayout *ull >ayout.

223

6ambahkan pada method frm6esting%& di frm6esting.java


!.&Ka.1-s8a**I e.(O+e.1aka MasO"F !.&Ka.1-s8a**I e.(O+i'e*-2O"F !.&Ka.1-s8a**I e.(OR,)/O"F !.&Ka.1-s8a**I e.(OSa'e.&aO"F !.&Ka.1-s8se Se'e! e*In*e)(%"F

,eseluruhan )rogram adalah sebagai berikut A


/* * Main.java * * Created on * */

ulG 1H9 '8869 'J;Q BM

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

Ja0a&an La i$an %H 1. 1pakah penulisan program dibawah ini diperbolehkan =


tr; { $ finall; { $

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

Ja0a&an La i$an %# . Bara penyimpanan


sSimpan " cmbKategori.getSelected1ndex(! N (Y( N cmb,aera#.getSelected1ndex(! N (Y( N txtJudul.get2ext(! N (Y( N txtArea.get2ext(!;

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

private private private private private private

$; 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%-$;

&; private private private private private private

-5ndonesia /agian /arat-9 -5ndonesia /agian TimurCom(o/ox cm(1aera% , new Com(o/ox#pil1aera%$;

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$ $;

frame;'.t%is9ioe.to)tring#$9 -3rror CopG-9 2ption<ane.<0B576M3))B@3

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

Anda mungkin juga menyukai