5/25/2018 Java Swing
1/129
MATERIPELATIHAN
Java Desktopava esktopIfnu Bima
[email protected]://ifnu.artivisi.com
http://www.artivisi.comJakarta, 2008
5/25/2018 Java Swing
2/129
5/25/2018 Java Swing
3/129
5/25/2018 Java Swing
4/129
5/25/2018 Java Swing
5/129
5/25/2018 Java Swing
6/129
5/25/2018 Java Swing
7/129
JAVAFOUNDATIONCLASS| HALAMAN1
Java Foundation Class
Java Foundation Class (JFC) merupakan sekumpulan class-classJava yan diunakan untuk menem!ankan perankat lunak!er!asis "#$ ("raphical #ser $nterface). %elain itu& JFC 'uamempunyai class-class yan diunakan untuk menam!ahkanfunsi dan kemampuan interaksi yan variatif dari pemroraman
Java. ari definisi ini& JFC tidak hanya !erisi class-class "#$ sa'atetapi 'ua class-class lain yan dapat meninkatkan kemampuanpemroraman Java !aik dari sei funsionalitasnya maupun darisei kemampuan interaksi pemroraman Java yan sanat kaya.
Fitur-fitur yang dipunyai oleh JFC
Fitur Deskripsi
KomponenSwing
Memuat semua class-class yang dibutuhkan untukmembuat aplikasi berbasis G!" dari tombol" table"
tab" menu" toolbar dan sebagainya
#ook andFeel $#aF%
Memberikan kemampuan kepada program Ja&a yangdikembangkan menggunakan library swing untukmemilih tema tampilan' Misalnya sebuah programyang sama dapat mempunyai tampilan windows #aFatau Ja&a #aF" atau #aF lain yang dikembangkan olehkomunitas seperti JGoodies'
(ccessibility()!
Faslititas untuk mengembangkan aplikasi bagipenyandang cacat" misalnya dukungan untukmembuat huruf braile" kemampuan mengambil inputdari layar sentuh dan sebagainya'
Ja&a *D ()! +erisi kumpulan class-class yang dapat digunakanuntuk memanipulasi ob,ect-ob,ect * dimensi" spertigaris" kotak" lingkaran" kur&a dan lain sebagainya'Selain itu Ja&a *D ()! ,uga memberikan kemampuanprogram yang ditulis menggunakan Ja&a untukmencetak output ke alat pencetak seperti printer'
Drag-and-drop
Menyediakan kemampuan drag-and-drop antaraprogram Ja&a dan program lain yang ditulis spesifikuntuk suatu platform sistem operasi tertentu'
5/25/2018 Java Swing
8/129
HALAMAN2 | JAVASWING
!nternationaliation $i./n%
Membantu pengembang perangkat lunak untukmembangun aplikasi yang dapat mendukung semuabahasa dan huruf yang ada di dunia'
a!el Feature JFC
*odul ini akan !erkonsentrasi untuk mem!ahas komponen swin.+emilihan komponen dan li!rary swin yan tepat dapatmempenaruhi kualitas proram yan kita !uat secara sinifikan.,al ini dikarenakan& dalam dunia Java %tandard dition& le!ihspesifik lai aplikasi Java yan di!anun menunakan swin&!elum ada framework yan !enar-!enar komprehensifmem!im!in penem!an untuk mem!uat aplikasi yan!erkualitas.
+ada umumnya aplikasi yan dikem!ankan denan %winmempunyai kode yan sanat kotor& dimana kode yan !erisipenendalian terhadap event komponen swin !ercampur adukdenan kode yan !erisi aturan !isnis dan kode yan !erisimanipulasi terhadap data.
%win +$ sanat !aus dan lenkap& Java 0.1 menyertakansetidaknya tu'uh !elas (23) !uah packae yan !erisi class-classswin yan siap diunakan.
,a&a0'accessibility ,a&a0'swing'plaf ,a&a0'swing'te0t
,a&a0'swing ,a&a0'swing'plaf'basic ,a&a0'swing'te0t'html
,a&a0'swing'border ,a&a0'swing'plaf'metal ,a&a0'swing'te0t'rtf
,a&a0'swing'colorchooser ,a&a0'swing'plaf'multi ,a&a0'swing'table
,a&a0'swing'e&ent ,a&a0'swing'plaf'synth ,a&a0'swing'tree
,a&a0'swing'filechooser ,a&a0'swing'undo
#tunnya kita tidak akan menunakan semua class-class dalam
packae swin& hanya se!aian kecil sa'a dari class-class terse!utyan nantinya akan !enar-!enar kita unakan. %ehina kita !isa!erkonsentrasi untuk memahami !e!erapa komponen pentin sa'a.alam modul ini nanti kita hanya akan menunakan !e!erapaclass komponen swin yan pentin sa'a. 4e!erapa kelas ini sudahcukup se!aai !ahan pemem!uat perankat lunak !erkualitas.
5omunitas Java 'ua menyediakan !anyak sekali li!rary swin&antara lain dari %win6 dan J"oodies yan menem!ankan
5/25/2018 Java Swing
9/129
JAVAFOUNDATIONCLASS| HALAMAN3
li!rary standard swin denan menam!ahkan !er!aai macamfeature menarik. %edankan komunitas dari 'avadesktop.ormenem!ankan !anyak sekali li!rary swin untuk keperluankhusus. 7yaris semua komponen yan kita perlukan !aikkomponen umum hina komponen untuk tu'uan khusus !anyaktersedia di internet& kita tinal mencari dan menunakan.
+raktek yan !aik dalam memilih komponen apa yan tepat adalahdenan mencari dahulu informasi di internet. ,al ini sanat!ermanfaat untuk menurani waktu kita menem!ankankomponen& sehina kita !isa le!ih !anyak !erkonsentrasi untuk
menem!ankan sisi !isnis dan usa!ility dari software yan kitakem!ankan. %e!aik apapun softeware yan kita !uat tapi tidakmem!erikan nilai tam!ah terhadap masalah yan dihadapi adalahkesia-siaan !elaka. 4anyak sekali software yan dianap aalmem!erikan nilai tam!ah terhadap masalah yan dihadapi hanyakarena tampilan "#$-nya sanat susah dipahami dan tidak intuitif.
*enunakan contoh lansun adalah cara yan tepat untukmemulai proses !ela'ar. Cara ini mem!erikan am!aran konkrittentan su!'ect yan akan dipela'ari& sehina proses !ela'ar le!ihcepat diserap. #ntuk tu'uan ini& kita akan mem!uat se!uahproram kecil yan menampilkan kata 8,ello9orld menunakankomponen swin. 4erikut ini adalah lankah-lankah yan harusanda lakukan untuk mem!uat proram 8,ello9orld !er!asiskomponen swin:
2. $nstall Java evelopment 5it (J5)
;. *em!uat proram ,ello9orld itu sendiri
5/25/2018 Java Swing
10/129
HALAMAN4 | JAVASWING
+roram Java denan tampilan seperti di atas dapat di!uat denandua cara. Cara yan pertama adalah denan menunakan te6teditor dan menetik kode proram. Cara yan kedua adalahdenan menunakan 7et!eans *atisse "#$ 4uilder.
?akukan lankah-lankah !erikut ini untuk mem!uat proramdiatas menunakan te6t editor:
2. 4uka te6t editor kesayanan anda.
;. 5etikkan kode proram di !awah ini dan simpan denan namafile ,ello9orld.'ava :
public class HelloWorld {public HelloWorld(){ }public void display(){ JFrame.setDefaultLookAndFeelDecorated(true); JLabel label = new JLabel("HelloWorld"); JFrame frame = new JFrame(); frame.getContentPane().add(label); frame.setVisible(true); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] str){ HelloWorld hello = new HelloWorld(); hello.display();
}}
Melakukan kompilasi program HelloWorld
5ompilasi proram terse!ut denan cara men'alankan proram'avac ('ava compiler). Jika anda !eker'a di linkunan windows!uka command prompt& kemudian ketik proram !erikut ini :
c:\latihan> javac HelloWorld.java
Jika anda !eker'a di linkunan "7#/linu6& !uka console danketikkan perintah !erikut ini :
shell$ javac HelloWorld.java
Menjalankan program HelloWorld
+roses kompilasi akan menhasilkan file yan !erekstensi .class&file inilah yan akan kita eksekusi. Jika anda !eker'a di linkunanwindows lakukan perintah !erikut ini:
5/25/2018 Java Swing
11/129
JAVAFOUNDATIONCLASS| HALAMAN5
c:\latihan> java HelloWorld
Jika anda !ekerka di linkunan "7#/?inu6 'alankan perintah!erikut ini:
shell$ java HelloWorld
7et!eans 0.2 dilenkapi denan "#$ !uilder yan dikenal denan*atisse. alam modul ini selan'utnya& *atisse akan diunakanuntuk menye!ut 7et!eans "#$ 4uilder. ools ini sanat powerfuldan produktif dalam mem!uat komponen "#$. ?ankah-lankah
yan harus anda lakukan untuk mem!uat %win ,ello9orlddenan *atisse adalah se!aai !erikut:
2. 4uat pro'ect !aru dalam 7et!eans& caranya pilih menu :
File > New Project
;. ?ankah !erikutnya anda harus menentukan kateori pro'ectyan akan anda !uat& caranya pilih :
General > Java Application
nda akan di!awa ke dialo untuk menentukan nama pro'ectdan folder dimana anda meletakkan pro'ect terse!ut& pilihfolder sesuai keininan anda.
5/25/2018 Java Swing
12/129
HALAMAN6 | JAVASWING
Jendela esin dan +allete 7et!eans *atisse
. #ntuk memenuhi tu'uan kita mem!uat %win ,ello9orld& kitaakan memasukkan strin 8,ello9orld ke dalam J?a!el yan!aru sa'a kita !uat. Caranya& do!el klik di atas J?a!el terse!ut&kursor muncul !ersama te6t field dan ketikkan 8,elloworld.
0. 5lik kanan di file ,ello9orld.'ava pada 'endela e6plorer dise!elah kiri& pilih menu Run File... untuk mencompile danmen'alankan class ,ello9orld.'ava atau tekan tom!ol %,$F AF0.
*atisse mempunyai sistem ?ayoutin yan sanat fleksi!le& sistemlayout yan diunakan oleh *atisse adalah "roup?ayout. alamchapter !erikutnya kita akan !ela'ar !aaimana menunakan"roup?ayout ini denan !enar dan memanfaatkan keunulanyadalam menata component "#$ denan sanat rapi.
%win helloworld ini hanya se!aian kecil sa'a dari peker'aan yanharus dilakukan dalam mem!anun aplikasi desktop !er!asis Java.%elan'utnya kita akan mem!ahas penunaan J?a!el& J4utton&
JCheck4o6& Je6tField dan JBadio4utton untuk mem!uat aplikasi"#$ sederhana denan menunakan *atisse.
5/25/2018 Java Swing
13/129
KOMPONEN SWING | HALAMAN7
Komponen Swing
%win toolkit menyediakan !anyak sekali komponen untukmem!anun aplikasi "#$ desktop. %win toolkit 'ua menyediakanclass-class untuk menanani interaksi antara aplikasi dan usermenunakan standard input seperti key!oard dan mouse.
5omponen-komponen yan disediakan swin mencakup semua "#$toolkit yan laim diunakan dalam apilasi desktop& seperti :Ja!el& J?ist& Jree& J4utton& J?a!el dan masih !anyak komponen-komponen lainnya yan sudah teru'i dan siap pakai.
%elain komponen "#$& swin 'ua menyediakan fasilitas untukproses undo& komponen untuk menolah te6t& internationaliation&5omponen "#$ yan mendukun penyandan cacat (accessi!ilitysupport) dan fasilitas dra-and-drop.
?ook and Feel merupakan fasilitas yan unik dalam swin. enanfasilitas ?ook and Feel ini kita !isa denan mudah meru!ahtampilan dari proram kita sesuai denan keininan dan tu'uankita. *isalnya& aar proram terlihat fancy atau aar proramterlihat konsisten dalam seala keadaan.
%win 'ua menyediakan li!rary Java ; untuk penolahan datasecara visual& seperti menolah am!ar& o!'ect ;& !ahkananimasi. %win?a!s.or menyediakan li!ary %win +ainter yanmerupakan penem!anan dari Java ;& %win +ainter inimemunkinkan aplikasi swin mempunyai tampilan yan indah danterlihat profesional.
Java 0.1 menam!ahkan !anyak sekali fitur-fitur !aru ke dalampackae swin& termasuk dukunan untuk li!rary Dpen"?menunakan JD"?& ray $con dan 9e! %ervice. enan adanyadukunan ini swin men'adi le!ih poweful dan mempunyai masadepan yan cerah.
%ecara arsitektur& %win di!anun diatas arsitektur 9 (!stract9indows oolkit). 9 adalah "#$ toolkit yan dikem!ankan oleh%un enineer se!elum swin muncul. 5elemahan utama 9adalah fleksi!ilitas tampilan "#$& seperti paintin method yanmasih sanat primitif.
%win dimaksudkan untuk memper!aiki kekuranan dari 9tanpa harus mem!uan teknoloi yan sudah di!uat dan mem!uat
5/25/2018 Java Swing
14/129
HALAMAN8 | JAVASWING
"#$ toolkit !aru dari nol.
5omponen 9 diletakkan dalam satu packae yaitu 'ava.awt&didalamnya terdapat komponen-komponen "#$ dasar& salahsatunya adalah Component. Class Component adalah moyan darise!aian !esar komponen 9 maupun %win. Check4o6& ?a!el&4utton dan !e!erapa komponen 9 lainnya adalah turunanlansun dari class Component. 7amun dalam kenyataanyaarsitektur demikian tidak mem!erikan fleksi!ilitas yan cukupmemadai untuk mem!uat !er!aai macam komponen !aru yandi!utuhkan dalam desktop application.
%win muncul denan mem!awa teknoloi 9 yan telahditam!ahkan denan !anyak kemampuan. 7yaris semua komponen"#$ dari swin merupakan turunan class Container dan classContainer adalah turunan dari class Component.
4eker'a denan komponen swin menunakan *atisse sanatmenyenankan dan mudah. "roup?ayout yan sanat fleksi!elmemunkinkan kita untuk mem!uat aplikasi denan tampilan
seperti yan kita harapkan.?a!el& te6tfield dan tom!ol adalah komponen-komponen dasar yanselalu ada dalam setiap aplikasi !er!asis desktop. 5etia komponenini mempunyai funsi yan sanat sederhana& te6tfield menyimpandata !er!entuk te6t (strin) yan relatif pendek & la!el !anyakdiunakan untuk mem!erikan keteranan pen'elas terhadapkomponen lain dan tom!ol diunakan user untuk men'alankan satuinstruksi tertentu.
4erikut ini adalah contoh aplikasi sederhana yan melakukanpen'umlahan dua !uah !ilanan.
Contoh proram menunakan J?a!el& Je6tField dan J4utton
#ntuk mem!uat aplikasi ini menunakan *atisse& lakukanlankah-lankah !erikut ini:
2. 4uat pro'ect !aru di 7et!eans (kalau sudah mem!uat pro'ect&
5/25/2018 Java Swing
15/129
KOMPONEN SWING | HALAMAN9
tidak perlu mem!uat lai) denan cara memilih menu :
File > New Project
5emudian ikuti petun'uk yan di!erikan dialo.
;. 4uat class JFrame !aru& caranya denan memilih menu :
File > New File
5emudian akan muncul dialo seperti di !awah ini :
Jendela dialo new file
JFrame Form
%eperti terlihat di dialo 7ew File dialo diatas& kemudian !erinama +en'umlahan.'ava
=. 4uat tampilan form seperti am!ar !awah ini& caranya denanklik Jendela +allete di se!alah kanan untuk memilih komponen
apa yan akan di!uat& kemudian klik di 'endela esin untukmenempatkan komponen yan sudah dipilih tadi ke dalamform. ,asilnya terlihat seperti pada am!ar di !awah ini:
Jendela desin 7et!ens *atisse
. "anti nama setiap komponen aar mudah dikenali. 5lik kanandiatas setiap komponen yan ada dalam Jendela esin diatas&kemudian pilih menu :
Jendela Designmenampilkan visualisasikomponen GI!
Jendela Sour"emenampilkan kodeprogram dari "lass #angsedang dibuka!
Jendela Swing $alleteberisikan komponen%komponen sw ing #angbisa kita drag%and%dropke dalam jendela design!
Jendela $ropertiesdigunakan untukmengedit properti darikomponen #ang sedangakti& dalam jendeladesign!
Jendela Inspe"tormenampilkan semua
komponen swing dalam"lass #ang sedang akti&baik #ang keli'atanse"ara visual di jendeladesign atau tidak!
penting
5/25/2018 Java Swing
16/129
HALAMAN10 | JAVASWING
Klik kanan > Change Variable Name ...
"anti nama komponen-komponen terse!ut (sesuai urutan darikiri ke kanan& atas ke !awah) men'adi : l!l5eteranan& t6t&l!l+lus& t6t4& !tn,itun& l!l,asil.
0. *enam!ahkan varia!le untuk menampun nilai yan akandi'umlahkan. 5lik tom!ol %ource untuk mem!uka 'endela yanmenampilkan kode sum!er dari proram di atas kemudiantam!ahkan kode di !awah ini tepat di!awah definisi dari class+en'umlahan:
private String str = "Hasilnya adalah : ";private int a, b;
3. *enanani penekanan tom!ol !tn,itun. 5lik kanan diataskomponen !tn,itun kemudian pilih menu :
Events > Action > actionPerformed
nda akan di!awa ke 'endela %ource& dan akan menemukankode proram seperti di !awah ini :
5/25/2018 Java Swing
17/129
KOMPONEN SWING | HALAMAN11
private void btnHitungActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:}
#!ah kode proram diatas men'adi :
private void btnHitungActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here: a = Integer.parseInt(txtA.getText());
b = Integer.parseInt(txtB.getText()); int hasil = a + b; lblHasil.setText(str + hasil);}
E. Compile dan 'alankan proram. ekan tom!ol %,$F A F0& atauklik kanan file +en'umlahan.'ava kemudian pilih menu Bun File.
Catatan :
*ethod $nteer.parse$nt diunakan untuk meru!ah %trinmen'adi $nteer.
*ethod !tn,itunction+erformed akan dipanil setiap kalikita memencet tom!ol !tn,itun.
%ekaran anda !isa melihat !ahwa !eker'a denan J?a!el&Je6tField dan J4utton sanat sederhana. #ntuk latihan& silahkanru!ah funsi yan diunakan dalam proram diatas& misalnyaperkalian dua !ilanan atau penuranan dua !ilanan.
JCheck4o6 dan JBadio4utton hanya !isa mempunyai dua !uahkemunkinan nilai& !enar atau salah. 5edua komponen inidiunakan untuk merepresentasikan data yan !erupa pilihan.
JCheck4o6 diunakan 'ika pilihanya !erupa multiple selection&
sedankan JBadio4utton diunakan 'ika pilihanya !erupa sinleselection.
JBadio4utton diunakan misalnya untuk merepresentasikan pilihan'enis kelamin. JCheck4o6 diunakan misalnya untukmerepresentasikan pilihan ho!!y.
4utton"roup diperlukan untuk menumpulkan JBadio4utton yanmempunyai rup pilihan yan sama. *isalnya rup pilihan 'eniskelamin diunakan untuk menumpulkan JBadio4utton yan
JC'e"k(o) danJ*adio(utton sebaikn#a
digunakan 'an#a jikaitem pili'an#a sedikitdan tidak bersi&atdinamis
penting
J+abel dan J,e)tFieldmempun#ai met'odget,e)t dan set,e)t
untuk mengambil danmengeset te)t #angditampilkan!
penting
5/25/2018 Java Swing
18/129
HALAMAN12 | JAVASWING
merepresentasikan pilihan laki-laki dan JBadio4utton yanmerepresentasikan pilihan perempuan dalam satu roup. Jika
JBadio4utton tidak diletakkan dalam satu roup& maka pilihan laki-laki dan pilihan perempuan !isa dipilih !ersamaan.
%tatus dari JBadio4utton dan JCheck4o6 dapat diketahui denanmelihat nilai kem!alian dari method is%elected& 'ika dipilih makanilai kem!alian method is%elected adalah !enar& dan false 'ikase!aliknya.
%etiap JBadio4utton dan JCheck4o6 mempunyai te6t yan
menerankan pilihan yan diwakilinya. *ethod ete6t dan sete6tdiunakan untuk memanipulasi te6t.
i!awah ini adalah contoh proram yan menunakan JCheck4o6dan JBadio4utton.
Contoh aplikasi menunakan JCheck4o6 dan JBadio4utton
i !aian atas aplikasi ini& terdapat dua JBadio4utton untukmerepresentasikan pilihan tipe warna& transparan atau !erwarna.i!awahnya terdapat pilihan warna yan dapat dipilih le!ih darisatu !uah menunakan JCheck4o6.
#ntuk mem!uat proram diatas ikuti lankah-lankah !erikut ini:
2. 4uat class !aru !ertipe JFrame Form& kemudian !eri nama+ilihan.'ava
;. 4uat tampilan diatas menunakan *atisse. komponen yanharus di!uat adalah :
ua o!'ect JBadio4utton : radio4erwarna danradioransparan.
%atu o!'ect 4utton"roup : roupipe9arna.
mpat o!'ect JCheck4o6 : chk,i'au& chk4iru& chk*erah&chk5unin.
%atu o!'ect Je6trea : t6t9arna.
%atu o!'ect J%croll+ane : scroll9arna
5/25/2018 Java Swing
19/129
KOMPONEN SWING | HALAMAN13
#ntuk melihat semua komponen yan ada dalam Jendelaesin& unakan Jendela $nspector di sisi kiri !awah.
5/25/2018 Java Swing
20/129
HALAMAN14 | JAVASWING
JCheck4o6 yan statusnya terpilih.
private void tampilkanWarna(){ StringBuffer warna = new StringBuffer(); if(chkBiru.isSelected()){ warna.append(chkBiru.getText() + " "); } if(chkHijau.isSelected()){ warna.append(chkHijau.getText() + " "); } if(chkKuning.isSelected()){
warna.append(chkKuning.getText() + " "); } if(chkMerah.isSelected()){ warna.append(chkMerah.getText() + " "); } txtWarna.setText(warna.toString()); }
0. *enanani event pemilihan JCheck4o6. Caranya se!aai!erikut :
a) +ilih komponen chk,i'au di Jendela esin.
!) 5lik kanan komponen chk,i'au untuk memunculkan conte6t(popup) menu.
c) +ilih menu :Event > Action > actionPerformed
d) nda akan di!awa ke Jendela Code& kemudian dalammethod chk,i'auction+erformed terse!ut panil methodtampilkan9arna. seperti di !awah ini :
private void chkHijauActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here: tampilkanWarna();}
?akukan hal ini untuk semua JCheck4o6.
3. Compile dan 'alankan proram denan menekan tom!ol %,$FA F0.
Cara lain dalam menampilkan pilihan adalah denan menunakanJ?ist dan JCom!o4o6. 5edua komponen ini mempunyai fleksi!ilitasyan le!ih tini dan le!ih mudah diunakan 'ika o!'ect yandimasukkan dalam pilihan le!ih kompleks. J?ist dan JCom!o4o6!isa mempunyai Componentditor aar pilihan yan ditampilkantidak hanya !erupa te6t& !isa !erupa warna atau icon. 4aian!erikutnya akan mem!ahas !aaimana !eker'a menunakan J?ist
Class String(u&&ersangat dianjurkan untukdigunakan sebagai " lassuntuk memanipulasiString!
$enggabungan string
menggunakan operator .sangat tidak dianjurkan-apalagi jika ukuranobje"t String%n#a suda'"ukup besar!
penting
5/25/2018 Java Swing
21/129
KOMPONEN SWING | HALAMAN15
dan JCom!o4o6.
JCom!o4o6 memerlukan tempat yan minimalis di!andinkandenan JBadio4utton& selain itu JCom!o4o6 mempunyai !entukCom!o4o6 yan dapat diedit& sehina memunkinkan user untukmemilih pilihan yan tidak ada dalam item JCom!o4o6.
Contoh JCom!o4o6
J?ist memunkinkan multiple selection denan menekan tom!ol :%,$F A ?eft Click atau CB? A ?eft Click. 5emampuan inimem!antu user 'ika harus melakukan multiple selection.
JCom!o4o6 dan J?ist sanat fleksi!el& kita dapat menam!ah danmenhapus item di dalamnya denan sanat mudah. %ehinacocok diunakan untuk merepresentasikan pilihan yan itempilihannya !ersifat dinamis.
plikasi di !awah ini adalah contoh penunaan JCom!o4o6 danJ?ist.
Contoh proram menunakan JCom!o4o6 dan J?ist
4aian pertama proram ini terdapat se!uah JCom!o4o6 danJ?a!el& setiap kali item di dalam JCom!o4o6 dipilih& J?a!el dise!elahnya akan menampilkan item yan dipilih terse!ut.
JCombo(o) dan J+istdigunakan jika itempili'an bersi&at dinamis!
JCombo(o) dapatmempun#ai bentuk #ang
dapat diedit se'inggauser dapat memasukkanpili'an #ang tidak adadalam da&tar!
J+ist dapat menerimapili'an lebi' dari satu!
penting
5/25/2018 Java Swing
22/129
HALAMAN16 | JAVASWING
4aian kedua proram ini terdapat se!uah J?ist dan Je6trea.%etiap kali item-item di dalam J?ist dipilih& Je6trea akanmenampilkan item-item yan dipilih terse!ut dipisahkan denankoma (&).
$kuti lankah-lankah !erikut ini untuk mem!uat proram di atas:
2. 4uatlah class JFrame Form !aru dan !eri nama?istndCom!o.'ava.
;. 4uat tampilan proram diatas menunakan *atisse& kemudiantam!ahkan komponen-komponen:
a) mpat !uah J?a!el : l!l+eker'aan& l!l+ilihan+eker'aan&l!l,o!!y& l!l+ilihan,o!!y.
!) %atu !uah JCom!o4o6 : cm!+eker'aan
c) %atu !uah J?ist : lst,o!!y
d) %atu !uah Jte6trea : t6t+ilihan,o!!y
5/25/2018 Java Swing
23/129
KOMPONEN SWING | HALAMAN17
. *enanani pemilihan JCom!o4o6. 5lik kanan JCom!o4o6 diJendela esin& kemudian pilih menu :
Events > Action > actionPerformed
Jendela Code akan ter!uka& tam!ahkan code seperti di !awahini :
private void cmbPekerjaanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:lblPilihanPekerjaan.setText(
"Pekerjaan anda : " +cmbPekerjaan.getSelectedItem()); }
method et%elected$tem dari JCom!o4o6 diunakan untukmemperoleh item yan sedan di pilih dalam JCom!o4o6.
0. *enanani event pemilihan dari J?ist. vent yan diunakanuntuk menanani pemilihan item dari J?ist !er!eda denan
JCom!o4o6. J?ist akan menaktifkan ?ist%election event ketikauser memilih item dalam J?ist. #ntuk menanani event ini&lakukan lankah-lankah !erikut :
a) 5lik kanan pada J?ist di dalam Jendela esin& kemudianpilih menu :
Events > ListSelection > valueChanged!) alam 'endela kode yan ketik kode seperti !erikut ini :
5/25/2018 Java Swing
24/129
HALAMAN18 | JAVASWING
private void lstHobbyValueChanged(javax.swing.event.ListSelectionEvent evt) {// TODO add your handling code here:Object[] selectedItems =
lstHobby.getSelectedValues();if(selectedItems == null ||
selectedItems.length == 0) txtPilihanHobby.setText("");
else{StringBuffer strValues = new
StringBuffer(); for(Object item : selectedItems){ strValues.append(item.toString() + ", "); }
txtPilihanHobby.setText(strValues.substring(0, strValues.length() -2));
}}
Catatan :
*ethod et%electedalues dari J?ist menem!alikan item-itemyan terpilih.
*enu& +opup menu dan ool!ar diunakan untuk melakukannaviasi dalam aplikasi. denan ketia komponen itu naviasidalam aplikasi men'adi le!ih fleksi!el dan mudah diunakan olehuser. *enu dan ool!ar pada umumnya diletakkan di !aian atasdari aplikasi aar mudah ditemukan oleh user. %edankan +opup*enu !isa muncul di mana sa'a sesuai denan konteks aplikasi.
J*enu4ar adalah class yan diunakan untuk menampun J*enu.J*enu dapat menampun satu atau le!ih J*enu$tem. J*enu$tem
merupakan !aian terluar dari struktur menu yan tidak !isamempunyai child. J%eparatordiunakan untuk memisahkan antarasatu menu item dan menu item yan lain. Jika didalam menuterdapat su! menu& unakan J*enu untuk menampun su! menuterse!ut. %elain J*enu$tem& J*enu 'ua dapat menerima class
JCheck4o6*enu$tem dan JBadio4utton*enu$tem.
J+opup*enu mempunyai !anyak kesamaan di!andinkan denanJ*enu4ar. +er!edaan utamanya adalah : J*enu4ar hanya !isa
JMenu(ar dan J,ool(ar'an#a bisa ditamba'kanke dalam JFrame!
JMenuItem adala'struktur terluar dariMenu #ang tidak bisamempun#ai "'ild!
J,ool(ar pada umumn#amenampung J(utton#ang diberi I"on danmempun#ai ba"kgroundtransparan!
penting
5/25/2018 Java Swing
25/129
KOMPONEN SWING | HALAMAN19
!erada di atas se!uah 'endela JFrame. %edankan J+opup*enu!isa muncul di mana sa'a sesuai denan konteks dari aplikasi.
+er!edaan lainnya terletak di dalam penunaan umum keduanya.J*enu4ar !erisikan menu/instruksi yan !ersifat umum dan!erlaku untuk semua keadaan dalam aplikasi. %edankan
J+opup*enu akan mempunyai menu/instruksi yan !er!eda-!eda!erdasarkan dari konteks aplikasi. Dleh karena itu J+opup*enuterkadan dise!ut 'ua se!aai konteks menu.
ool!ar mem!erikan cara yan le!ih praktis di!andinkan menu&
!ahkan !isa dikatakan !ahwa tool!ar adalah cara cepat untukmenakses menu. Dleh karena itu& setiap item dalamtool!ar!iasanya 'ua tersedia dalam menu. +ada umumnya tool!ardiwakili hanya denan am!ar/icon yan melam!ankan perintahdari tool!arnya. i internet !anyak tersedia tool!ar icon ratis
yan dapat kita unakan.
4er!eda denan J*enu4ar dan J+opup*enu yan hanya !isamenerima menu item& Jool4ar dapat menampun J4utton ataucontrol lainya. %eperti contohnya : JCheck4o6& JBadio4utton&
Jtole4utton dan lainya. 7ormalnya& Jool4ar akan diisi denanJ4utton yan dihilankan te6t-nya dan dianti denan icon. 5ita'ua perlu meru!ah dekorasi J4utton aar tampilannya terlihatcantik dan menarik.
Contoh proram denan *enu& +opup *enu dan ool!ar
#ntuk mem!uat proram seperti di atas& ada !e!erapa tahap yanperlu dilakukan. ahap pertama adalah mem!uat *enu& yankedua adalah mem!uat +opup *enu dan yan ketia adalahmem!uat ool!ar.
Membuat Menu
4eker'a denan *enu dalam Java meli!atkan enam komponenswin& antara lain :
2. J*enu4ar : Class yan menampun semua menu& hanya !isamenampun J*enu se!aai child.
;. J*enu : Class yan mempunyai child menu item. 4iasanyaJ*enu ini yan 'adi child lansun denan J*enu4ar
5/25/2018 Java Swing
26/129
HALAMAN20 | JAVASWING
5/25/2018 Java Swing
27/129
KOMPONEN SWING | HALAMAN21
*enu 4ar dari Jendela +allete kemudian klik JFrame di Jendelaesin. %e!uah class J*enu4ar akan ditam!ahkan di dalam
JFrame. "anti namanya men'adi menu4ar.
5/25/2018 Java Swing
28/129
HALAMAN22 | JAVASWING
Add > JSeparator
0. *enam!ahkan J*enu. 4erikutnya kita akan menam!ahkanJ*enu !aru ke dalam J*enu menuFile. J*enu yan !aru iniakan !ertindak se!aai su! menu. Caranya 'ua sama : klikkanan di J*enu menuFile kemudian pilih menu :
Add > JMenu
4eri nama menu%ettin& set te6t dan mnemonic yan sesuaipada Jendela +roperties.
3. *enam!ahkan JCheck4o6*enu$tem. +erilakuJCheck4o6*enu$tem tidak !er!eda 'auh denan JCheck4o6!iasa& !edanya hanyalah JCheck4o6*enu$tem !erada dalamstruktur menu. Cara menam!ahkan JCheck4o6*enu$tem samadenan komponen lain : klik kanan J*enu menu%ettinkemudian pilih menu :
Add > JCheckBoxMenuItem
4eri nama chk?ine7um!er& set te6t dan mnemonic yan sesuaipada Jendela +roperties.
JCheck4o6*enu$tem sedikit sepesial di!andinkan denanJ*enu$tem& karena JCheck4o6*enu$tem memiliki propertiesselected. +roperties selected ini diunakan untuk menentukanapakah JCheck4o6*enu$tem dalam keadaan terpilih atau tidak.
E. *enam!ahkan JBadio4utton*enu$tem. alam contoh ini kitaakan mempunyai dua !uah JBadio4utton*enu$tem& radio4inarydan radioe6t. 5eduanya di!uat denan lankah yan samadenan komponen lain& klik kanan di J*enu menu%ettin&kemudian pilih menu :
Add > JRadioButtonMenuItem
%et te6t dan mnemonic yan sesuai dari Jendela +roperties.
G. *enam!ahkan 4utton"roup. %eperti halnya JBadio4utton&JBadio4utton*enu$tem 'ua memerlukan 4utton"roup aarhanya satu !uah JBadio4utton*enu$tem yan !isa dipilih. Caramenam!ahkan 4utton"roup sanat mudah& klik item4utton"roup dari Jendela +allete kemudian klik Jendela esin&
maka otomatis 4utton"roup akan ditam!ahkan. "anti namanyamen'adi roupDpen*ethod.
alam Jendela $nspector& 4utton"roup yan !aru di!uat tadiakan !erada dalam kateori Dther Components& seperti terlihatdalam am!ar di !awah ini :
H
5/25/2018 Java Swing
29/129
KOMPONEN SWING | HALAMAN23
4utton"roup !erada dalam kateori Dther Components
21. *enam!ahkan JBadio4utton*enu$tem ke dalam 4utton"roup.+ilih masin-masin JBadio4utton*enu$tem dari Jendela$nspector& kemudian perahatikan Jendela +roperties dari
JBadio4utton*enu$tem terse!ut& pada !aian roup4uttonpilih item roupDpen*ethod& seperti terlihat dalam am!ar di!awah ini :
+roperties dari JBadio4utton*enu$tem
22. Compile dan 'alankan class ool!ar*enu.'ava. 5lik kanan class
ool!ar*enu dari Jendela esin kemudaian pilih menu BunFile atau tekan tom!ol %,$F A F0.
4eker'a denan *enu menunakan *atisse sanatlahmenyenankan dan produktif. ,al ini !er!eda sekali 'ika harusmenetik satu demi satu kode untuk menyusun struktur menuseperti contoh proram diatas.
*em!uat +opup *enu menunakan *atisse 'ua samamudahnya. ,anya sa'a kita harus menentukan dimana dan denan
5/25/2018 Java Swing
30/129
HALAMAN24 | JAVASWING
cara apa popup menu itu muncul& apakah denan penekanantom!ol tertentu dari key!oard atau ketika tom!ol mouse ditekan.
Membuat $opup Menu
+opup menu pada dasarnya tidak 'auh !er!eda di!andinkandenan menu !iasa& hanya sa'a popup menu dapat muncul di manasa'a& tidak hanya di !aian atas JFrame seperti halnya J*enu4ar.%elain itu kita harus menentukan kapan popup muncul& padaumumnya popup akan muncul ketika user melakukan klik kananterhadap suatu komponen swin. *isalnya& ketika suatu ta!le di
klik kanan terdapat popup yan muncul& dan se!aainya.
+opup menu terutama diunakan se!aai 8conte6t sensitive menu&dimana menu yan ditampilkan oleh popup menu terantunkonteks dari aplikasi& semisal : komponen apa yan dikenai aksiklik kanan& !aaimana keadaan data dalam komponen terse!ut danse!aainya.
plikasi yan memerlukan interaksi yan sanat intens denanuser se!aiknya menunakan popup menu untuk memudahkanuser menakses action tertentu. ,al ini 'auh le!ih praktisdi!andin user harus menakses menu dalam J*enu4ar di !aianatas JFrame.
+opup menu dalam contoh proram diatas akan muncul ketika user
melakukan klik kanan terhadap JFrame. menu yan ditampilkanyapun hanya ada tia !uah: cut& copy dan paste.
$kuti lankah-lankah !eritkut ini untuk mem!uat +opup menu :
2. 4uka class ool!ar*enu.'ava& yan telah di!uat dalam lankahse!elumnya& dalam Jendela esin.
;. 5lik Jendela +allete dan pilih J+opup*enu& kemudian klikJendela esin. %ecara otomatis J+opup*enu akanditam!ahkan dalam class ool!ar*enu.'ava. J+opup*enu tidakterlihat dalam Jendela esin& namun anda !isa menkasesnyamelalui Jendela $nspector.
JMenuitem
"anti nama o!'ectnya men'adi menuCut& !eralihlah ke Jendela+roperties kemudian set te6t dan mnemonic yan sesuai.
?akukan lankah ini untuk J*enu$tem yan lain& menuCopy
5/25/2018 Java Swing
31/129
KOMPONEN SWING | HALAMAN25
dan menu+aste.
=. *emunculkan J+opup*enu. 5etika tom!ol kanan mouse di klikdiatas JFrame& J+opup*enu akan tampil. ar !ehaviorterse!ut !er'alan& kita perlu menanani event mouseClickterhadap JFrame. Caranya :
a) 5lik kanan JFrame di Jendela esin& kemudian pilih menu :
Events > Mouse > mouseClicked
!) i dalam 'endela source yan ter!uka masukkan kode
!erikut ini :private void formMouseClicked( java.awt.event.MouseEvent evt) {
// TODO add your handling code here: if(evt.getButton() == MouseEvent.BUTTON3){ popUpMenu.show( (Component)evt.getSource(),
evt.getX(),evt.getY()); }}
5ondisi if diatas diunakan apakah tom!ol yan diklikmouse adalah tom!ol se!elah kanan& 'ika nilai kem!alianmethod et4utton sama denan nilai 4#D7< maka !enartom!ol kanan yan ditekan.
*ethod show diunakan untuk memunculkan popup menu¶meter pertama diisi denan Component dimananantinya popup menu akan ditampilkan& sedankanparameter kedua dan ketia diisi denan letak koordinatpopup menu akan ditampilkan.
. %impan file ool!ar*enu.'ava& compile dan 'alankan. 5emudianco!a munculkan popup menu denan menklik kanan JFrame.
+opup menu sanat !eruna 'ika aplikasi yan kita kem!ankanmem!utuhkan interaksi yan intensif denan user. +opup menumenyediakan cara mudah untuk menakses menu/action yansesuai denan konteks dari aplikasi.
Membuat ,oolbarool!ar mem!erikan dimensi lain dalam menakses menud!andinkan menu ataupun popup menu. +ada umumnya ool!armerupakan cara sinkat untuk menakses menu. *enu yandiwakili tool!ar adalah menu yan !ersifat umum dan tidak terikatpada konteks tertentu.
5eunaan lain dari tool!ar adalah mempercantik tampilan aplikasi&karena tool!ar !iasanya adalah tom!ol yan didekorasi denan
5/25/2018 Java Swing
32/129
HALAMAN26 | JAVASWING
icon yan menarik. %elain itu tool!ar 'ua mem!erikan kesempatankepada user untuk menkustomisasi tampilan dari aplikasi. 5arenalayout tool!ar sanat fleksi!el& user !isa memindah-mindahkanletak tool!ar di dalam aplikasi& di atas& di!awah atau disampin&atau !ahkan menam!an (floatin) diatas 'endela yan sedanaktif.
alam contoh proram diatas kita akan mem!uat se!uah Jool4ardenan dua !uah J4utton yan telah didekorasi denan icon cantik.$con yan diunakan !anyak tersedia di internet& format file yandipilih adalah .pn& karena format file ini palin !aus dalam
menanani transparasi komponen.
%e!elum mulai mem!uat Jool4ar& kita perlu mempersiapkanterle!ih dahulu icon yan akan diunakan se!aai dekorasi
J4utton. $kuti lankah-lankah !erikut ini :
2. 4uatlah se!uah 'ava packae !aru untuk menampun semuaicon yan akan diunakan. caranya klik kanan di 'endela+ro'ects !aian nama pro'ect& pilih menu :
New > Java Package
4eri nama imaes untuk 'ava packae yan !aru sa'a kita !uka.
;. *emasukkan $con ke dalam packae. #ntuk memasukkanimae ke dalam packae kita perlu tahu dimana pro'ect
disimpan& misalkan pro'ect disimpan dalam folder :c:\javaswing
4uka file e6plorer& kemudian naviasi ke folder
c:\javaswing\src\images
Copy semua icon yan diperlukan ke dalam folder diatas.
5/25/2018 Java Swing
33/129
KOMPONEN SWING | HALAMAN27
5/25/2018 Java Swing
34/129
HALAMAN28 | JAVASWING
Jendela 4order ditor dari J4utton
c) DpaKue& uncheck nilai opaKue. 4ertu'uan aar tom!olnya!erwarna transparan& sehina mempunyai warna!ackround yan sama denan !ackround Jool4ar.
d) $con& anti iconya denan icon yan telah disiapkan. #ntuk
memasukkan icon ke dalam J4utton& tekan tom!ol disampin pilihan $con di dalam Jendela +roperties& kemudianakan muncul ialo $con ditor seperti di !awah ini :
Jendela icon editor
+ilih radio !utton Classpath& kemudian tekan tom!ol %electFile dan pilih salah satu icon yan telah disiapkan. ekanD5. ?akukan lankah-lankah yan sama terhadap J4utton
yan lain.
. Compile dan 'alankan class ool!ar*enu untuk melihathasilnya.
5/25/2018 Java Swing
35/129
KOMPONEN SWING | HALAMAN29
ialo memerankan peran yan pentin dalam aplikasi !er!asisdesktop. $nteraksi antara user denan aplikasi terkadan tidak!er'alan denan !aik karena user mem!erikan aksi yan tidak validkepada aplikasi. 5etika hal terse!ut ter'adi& aplikasi harusmem!eritahukan kepada user apa yan telah ter'adi dan!aaimana seharusnya user memper!aikinya. *odel interaksiseperti ini tepat dilaksanakan menunakan dialo.
%kenario lain adalah ketika aplikasi memerlukan input dari useraar aplikasi !isa terus melaksanakan tuasnya& misalnya memintakonfirmasi apakah user yakin akan melaksanakan se!uah aksipentin terhadap aplikasi seperti delete& update atau add data.
ialo 'ua mem!erikan pem!atasan kepada user& se!elum dialoselesai diproses& user tidak akan !isa !erinteraksi denan !aianaplikasi lainya. ialo menceah hal ini ter'adi denan memastikan!ahwa 'endela yan !isa diaktifkan hanyalah 'endela dialo&sedankan 'endela aplikasi yan lain tidak dapat diaktifkan selama
'endela dialo masih aktif.
plikasi sanat serin menunakan dialo untuk !erinteraksidenan user& tetapi 'enis interaksinya selalu seraam dan !erulan-
5/25/2018 Java Swing
36/129
HALAMAN30 | JAVASWING
ulan. %win menyediakan dialo yan didesin untuk keperluanyan serin muncul dalam aplikasi& seperti JDption+ane danJFileChooser. %win 'ua menyediakan class Jialo 'ika kita ininmem!uat dialo custom sesuai keininan kita.
Membuat pre%de&ined dialog dengan J2ption$ane
JDption+ane menyediakan !e!erapa dialo yan siap pakai danserin diunakan dalam aplikasi. JDption+ane sanat memudahkankita dalam meminta user suatu input tertentu atau mem!eritahuuser apa yan ter'adi dalam aplikasi.
JDption+ane mempunyai !anyak static method untuk menampilkanpopup dialo denan mudah. erdapat empat method utama yandapat kita unakan se!aai landasan mem!uat dialo. 5eempatmethod terse!ut secara rinci diam!arkan dalam ta!le !erikut ini:
*ethod eskripsi
showConfirmialo *eminta konfirmasi daru user& seperti yes/no/cancel
show$nputialo *eminta input dari user& !aik !erupa input te6tmenunakan Je6tField maupun pilihanmenunakan JCom!o4o6
show*essaeialo *em!eritahukan user tentan apa yan !aru sa'ater'adi
showDptionialo "a!unan dari ketia 'enis dialo diatas
a!le method JDption+ane
%win 'ua menyediakan method show$nternalLLL yan diunakan'ika kita !eker'a denan J$nternalFrame.
+arameter dari keempat method terse!ut menikuti pola yankonsisten. erurut dari kiri ke kanan& !erikut ini parameter-parameter yan !isa diterima oleh method-method dalam class
JDption+ane:
2. parentComponent
*endefisikan komponen yan akan men'adi parent dari dialo!o6 ini. Frame dari parent component terse!ut akan men'adiframe dari dialo dan dialo akan ditampilkan di tenah-tenah
parent component. Jika nilai dari parentComponent diset null&maka dialo akan menunakan frame default dan dialo akandiletakkan ditenah-tenah layar monitor (terantun ?MF).
;. messae
+esan yan deskriptif menerankan perihal dialo yanmuncul. +ada umumnya messae !erupa pesan %trin yanakan diletakkan dalam dialo& namun 'enis o!'ect lain 'uadii'inkan diunakan se!aai messae. D!'ect-o!'ect yan
5/25/2018 Java Swing
37/129
KOMPONEN SWING | HALAMAN31
dii'inkan akan diperlakukan !er!eda& o!'ect-o!'ect terse!utantara lain
a) D!'ectI
%etiap o!'ect akan ditampilkan dalam dialo !erurut dariatas ke !awah. turan ini !erlaku rekursif untuk semuao!'ect didalam array.
!) Component
Jika o!'ect yan dimasukkan se!aai messae !ertipe
Component& maka Component terse!ut akan ditampilkanditenah-tenah dialo.
c) $con
$con akan dimasukkan ke dalam se!uah J?a!el kemudianditampilkan di se!elah kiri dari dialo.
d) others
D!'ect lainya akan ditampilkan dalam dialo denanmenam!il nilai kem!alian dari method to%trin dari setiapo!'ect.
5/25/2018 Java Swing
38/129
HALAMAN32 | JAVASWING
yan akan muncul sesuai ke!utuhan.
. options
eskripsi yan le!ih detail dari set tom!ol yan diunakandialo. 7ilai yan laim adalah se!uah array %trin !erisi te6t
yan akan ditampilkan di setiap tom!ol. 7amun D!'ect lain'ua dapat diterima& antara lain:
a) Component
Component akan diletakkan dalam !aris tom!ol secara
lansun.!) $con
%e!uah J4utton akan di!uat dan didekorasi denan icon ini.
c) other
D!'ect denan tipe selainnya akan diru!ah ke dalam !entuk%trin denan menam!il nilai kem!alian dari methodto%trin dari o!'ect terse!ut.
0. icon
$con yan diunakan untuk mendekorasi dialo. Jika icon inididefinisikan maka akan menimpa icon default yandidefinisikan oleh messaeype.
3. title
Judul dari dialo yan diletakkan di !aian palin atas daridialo.
E. initialalue
7ilai default dari pilihan yan munkin ada dalam dialo.
#ntuk le!ih 'elasnya& !erikut ini !e!erapa contoh kode penunaanJDption+ane !eserta hasil tampilanya :
JOptionPane.showMessageDialog(null,"Simple plain dialog","Plain dialig",JOptionPane.PLAIN_MESSAGE);
ampilan dialo sederhana
5/25/2018 Java Swing
39/129
KOMPONEN SWING | HALAMAN33
JOptionPane.showMessageDialog(null,"Your action was succeed, +you can proceed to next assigment","Information dialog",JOptionPane.INFORMATION_MESSAGE);
ampilan dialo denan tipe dialo $nformation
JOptionPane.showMessageDialog(null,"You neet to be sure to do this action!","Dialog Peringatan", JOptionPane.WARNING_MESSAGE);
ialo denan tipe 9arnin
JOptionPane.showMessageDialog(null,"Something goes wrong and generate error message","Error Dialog", JOptionPane.ERROR_MESSAGE);
ialo denan tipe rror
JOptionPane.showConfirmDialog(null,"Choose yes or no","Confirmation Dialog",JOptionPane.YES_NO_OPTION,JoptionPane.WARNING_MESSAGE);
5/25/2018 Java Swing
40/129
HALAMAN34 | JAVASWING
Dption dialo denan tipe $nformation dan pilihan >%N7D
JOptionPane.showConfirmDialog(null,
"Choose yes, no or cancel","Confirmation Dialog",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.PLAIN_MESSAGE);
Dptionialo
JOptionPane.showInputDialog(null,"Input your name here","Input Dialog",JOptionPane.INFORMATION_MESSAGE);
$nputialo denan tipe messae $nformation
String[] options = {"Apple","Mango","Grape","Guava"};JOptionPane.showInputDialog(null,
"Choose this one Option","Input dialog",JOptionPane.WARNING_MESSAGE,null,options,"Apple");
$nputialo dialo denan tipe 9arnin& Dptions !erupa array of%trin dan initialalue O pple
5/25/2018 Java Swing
41/129
KOMPONEN SWING | HALAMAN35
Membuat JFileC'ooser
JFileChooser diunakan untuk !ernaviasi dalam file system&kemudian memilih satu atau le!ih file atau folder dari list file danfolder. JFileChooser pada dasarnya adalah penem!anan daridialo yan dapat diunakan untuk memilih file. JFileChooser dapatdiunakan se!aai dialo untuk menyimpan file atau untukmem!uka file.
JFileChooser hanya mem!erikan fasilitas untuk memilih file ataufolder& sedankan mekanisme untuk menyimpan atau mem!uka file
dilakukan sendiri menunakan li!rary $/D.
plikasi !erikut ini adalah contoh penunaan JFileChooser untukmem!uka dan menyimpan file.
Contoh proram menunakan JFileChooser
ampilan JFileChooser ketika tom!ol open ditekan adalah seperti di!awah ini :
ampilan JFileChooser
#ntuk mem!uat aplikasi diatas lakukan lankah-lankah !erikut ini:
2. 4uat class JFrame Form !aru& !eri nama Chooser.'ava
;. *asukkan dua !uah Je6tField : t6tDpen dan t6t%ave& dua !uah
5/25/2018 Java Swing
42/129
HALAMAN36 | JAVASWING
J!utton : !tnDpen dan !tn save& se!uah J?a!el : l!l%tatus.%esuaikan penataan komponen sesuai denan am!ar diatas.
5/25/2018 Java Swing
43/129
KOMPONEN SWING | HALAMAN37
private void btnSaveActionPerformed(ActionEvent evt) {// TODO add your handling code here:int ret = chooser.showSaveDialog(this);if(ret == JFileChooser.APPROVE_OPTION){
File f = chooser.getSelectedFile(); lblStatus.setText("Status : saving file" +
f.getAbsolutePath()); txtSave.setText(f.getAbsolutePath());
}}
3. *enhandle penekanan tom!ol !tnDpen. 5ode untukmenanani penekanan tom!ol !tnDpen mirip denan kodeuntuk menanani penenakan tom!ol !tn%ave& per!edaanyaadalah !tnDpen akan menampilkan dialo open file& !erikit inikodenya :
private void btnBrowseActionPerformed(ActionEvent evt){// TODO add your handling code here:int ret = chooser.showOpenDialog(this);if(ret == JFileChooser.APPROVE_OPTION){
File f = chooser.getSelectedFile();lblStatus.setText("Status : opening file" +
f.getAbsolutePath()); txtOpen.setText(f.getAbsolutePath());
}}
E. Compile dan 'alankan aplikasinya denan menekan tom!ol%,$F A F0
4eker'a denan JDption+ane dan denan JFileChooser sanatsederhana. 5eduanya menunakan modal dialo untuk menam!ilinput dari user. *odal dialo akan menceah user menakses!aian aplikasi lain se!elum dialo ditutup& atau dalam hal inimemutuskan pilihan apa yan diam!il oleh user.
*asih !anyak lai komponen swin yan disediakan oleh J5& andatinal melan'utkan mem!aca dari referensi yan di!erikan modulini pada !aian akhir untuk melan'utkan pem!ela'aran andatentan Java desktop.
5/25/2018 Java Swing
44/129
HALAMAN38 | JAVASWING
Konsep M3C
*C adalah arsitektur aplikasi yan memisahkan kode-kodeaplikasi dalam tia lapisan& *odel& iew dan Control. *Ctermasuk dalam arsitektural desin pattern yan menhendakioranisasi kode yan terstruktur dan tidak !ercampur aduk. 5etika
aplikasi sudah sanat !esar dan menanani struktur data yankompleks& harus ada pemisahan yan 'elas antara domain model&komponen view dan kontroler yan menatur penampilan modeldalam view.
rsitektur *C ini memunkinkan adanya peru!ahan dalamdomain model tanpa harus menu!ah code untuk menampilkandomain model terse!ut. ,al ini sanat !ermanfaat ketika aplikasimempunyai domain model dan view komponen sanat !esar dankompleks.
iaram interaksi antar komponen dalam arsitektur *C(9ikipedia.or)
*odel adalah representasi dari o!'ect yan sedan diolah olehaplikasi& dalam Java& model ini !iasanya direpresesentasikanse!aai Java 4ean. Java 4ean adalah class Java !iasa atau +DJD(+lain Dld Java D!'ect). %yarat se!uah +DJD dianap se!aai Java4ean adalah :2. *empunyai constructor default& constructor yan tidak
mempunyai parameter.;. %emua field-field yan !isa diakses dilenkapi denan etterdan setter method.
?e!ih 'elasnya lihat kode dari class +erson di !awah ini :
5/25/2018 Java Swing
45/129
KONSEPMVC | HALAMAN39
public class Person { private int id; private String name; private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setNama(String name) { this.name = name;}//getter dan setter method untuk field lainnya di sini}
5ode diatas adalah representasi *odel dalam Java untuk ntity+erson. 4e!erapa oran terkadan salah menartikan model inise!aai data akses domain. imana data dari sum!er data&misalnya data!ase& diam!il dan diolah. +ada hakekatnya *odeladalah representasi data dari o!'ect se!enarnya& !ukan kumpulankode untuk menakses data dari data!ase.
+endekatan ter!aik adalah memisahkan kode untuk melakukanakses sum!er data ke dalam lapisan tersendiri& lapisan ini !iasanyadise!ut se!aai service. %ervice diimplementasikan dalam !entukclass-class yan dise!ut se!aai manaer& misalnya %P?*anaer&+rint*anaer& Beport*anaer& L*?*anaer& 9e!%ervice*anaerdan seterusnya. enan !eitu kode akan men'adi le!ih rapi danterstruktur. *anfaat palin terasa adalah kemudahan pencarian
kesalahan dan penam!ahan modul-modul !aru tidak harusmerom!ak seluruh struktur aplikasi.
iew adalah komponen untuk merepresentasikan *odel dalam!entuk visual. %emisal komponen swin& seperti : Ja!le& J?ist&
JCom!o4o6 dan se!aainya. iew 'ua !ertanun 'awa! untukmenankap interaksi user terhadap sistem& semisal : klik mouse&penekanan tom!ol key!oard& !arcode scannin dan se!aainya.
Controller se!enarnya hanya sekumpulan kode-kode untukmensinkronisasi keadaan *odel dan iew. Jika ada peru!ahan datadari *odel& Controller harus menupdate tampilan iew. anse!aliknya 'ika user mem!erikan event terhadap iew& Controllerharus menupdate *odel sesuai denan hasil interaksi userterhadap iew.
%e!aaian !esar komponen swin mempunyai model. J4uttonmempunyai model yaitu 4utton*odel yan memean state dari
J4utton Q apa key!oard mnemonicnya& apakah J4utton terse!utsedan dipilih atau tidak dan seterusnya. da pula komponenswin yan mempunyai le!ih dari satu model. J?ist mempunyai
5/25/2018 Java Swing
46/129
HALAMAN40 | JAVASWING
?ist*odel yan memean isi dari J?ist dan ?ist%election*odeluntuk mencatat item J?ist yan sedan dipilih.
+ada !anyak kasus normal kita tidak perlu pusin memikirkanmodel ini. %emisal kita tidak perlu memikirkan model dari J4uttonkarena pada kasus umum kita tidak perlu memodifikasi model dari
J4utton.
?alu& kenapa model komponen swin di!uatR lasan utamanyaadalah fleksi!ilitas untuk menentukan !aaimana data disimpandan diam!il dari komponen swin. *isalnya kita mempunyai
aplikasi spreadsheet yan menunakan komponen Ja!le&karakteristik utama spreadsheet adalah !anyak cell yan koson&denan !eitu kita !isa memilih model data yan sesuai denankarakteristik terse!ut.
Contoh lainnya adalah Ja!le yan diunakan untuk menampilkandata dari data!ase denan 'umlah !aris luar !iasa !anyak. 5ita !isamenatur aar tampilan Ja!le di!uat halaman-per-halaman dalammenampilkan !aris data& tidak semua data ditampilkan dalam satuhalaman& hal ini ditu'ukan untuk efisiensi dan mempertahankanaar aplikasi tetap responsif walau !eker'a denan data yan!esar.
*odel dalam komponen swin 'ua mempunyai keuntunan lain&yaitu tidak perlu ada dua data terpisah& untuk struktur data aplikasi
dan untuk komponen swin.5eunaan *odel yan cukup pentin 'ua adalah adanya konsepevent-listener& dimana 'ika ter'adi event peru!ahan data dalammodel& semua listener yan terdaftar dalam model terse!ut akandi!eritahu dan tindakan yan tepat dapat diam!il untuk menananievent yan muncul. %e!aai contoh& untuk menam!ahkan itemdalam J?ist kita !isa memanil method add$tem dari J?$st.+enam!ahan item dalam J?ist ini akan menaki!atkan ?ist*odelmemicu event dalam J?ist dan listener lainnya. 5omponen swinSdalam hal ini J?istSakan diupdate tampilanya untuk merefleksikanperu!ahan item dalam ?ist*odel.
9alaupun terkadan !anyak yan menye!ut arsetektur komponenswin se!aai *C& tetapi pada dasarnya arsitektur komponen
swin tidak sepenuhnya *C. 5omponen swin secara umumdi!uat aar iew dan Controller diletakkan dalam satu tempat(class) yaitu class #$ yan disediakan oleh ?ook-and-Feel.
rsitektur komponen swin le!ih tepat dise!ut se!aai 8rsitekturdenan *odel yan terpisah.
%elan'utnya kita akan mem!ahas !e!erapa model yan serinkaliharus kita kustomisasi sesuai denan ke!utuhan. %edankan model
yan nyaris tidak pernah kita ru!ahS4utton*odelStidak di!ahasdalam !aian ini.
5/25/2018 Java Swing
47/129
KONSEPMVC | HALAMAN41
a!le*odel adalah class model yan palin serin dikustomisasi.5arakteristik data dari Ja!le yan !er!entuk koleksi data duadimensi mem!utuhkan perhatian khusus aar efisien diunakandalam aplikasi. Jika kita tidak hati-hati& maka aplikasi kita !isamen'adi sanat lam!at dan tidak efisien.
a!le*odel adalah interface yan diunakan oleh Ja!le untukmendefinisikan ciri-ciri dari data ta!ular yan akan ditampilkanoleh Ja!le. *isalnya : 'umlah kolom& nama kolom& class dari o!'ectdalam kolom& 'umlah !aris dan nilai setiap cell. enan adanyadata-data ini Ja!le dapat secara efisien menentukan !aaimanamenampilkan data terse!ut.
4erikut ini adalah kode untuk menampilkan koleksi o!'ect +erson.Class rray?istT+ersonU adalah implementasi dari enerics&konsep dalam Java yan diunakan untuk mendefinisikan isi darikoleksi. rray?istT+ersonU artinya adalah mem!uat se!uah o!'ectkoleksi rray?ist yan harus diisi oleh o!'ect +erson dan tidak !isadiisi oleh o!'ect lainya& misalnya %trin.
public class PersonTableModel extends AbstractTableModel{private List persons; public PersonTableModel(List persons) {
this.persons = persons; } public int getRowCount() { return persons.size(); } public int getColumnCount() { return 3; } public Object getValueAt(int rowIndex, int
columnIndex) { Person p = persons.get(rowIndex); switch(columnIndex){ case 0 : return p.getId(); case 1 : return p.getName();
case 2 : return p.getEmail(); default : return ""; } }
5/25/2018 Java Swing
48/129
HALAMAN42 | JAVASWING
@Override public String getColumnName(int column) { switch(column){ case 0 : return "ID"; case 1 : return "NAME"; case 2 : return "EMAIL"; default : return ""; } }}
>an perlu diperhatikan !ahwa dalam !straca!le*odel& methodisCelldita!le selalu menem!alikan nilai false& artinya semua celltidak dapat diedit. 5emudian method setaluet adalah methodkoson !elaka& artinya 'ika kita memanil method ini tidak akanter'adi apa-apa.
Class kedua adalah efaulta!le*odel yan telahmenimplementasi semua method a!stract dari interfacea!le*odel. Bepresentasi data efaulta!le*odel menunakandua 'enis data ta!ular& yaitu array dua dimensi& D!'ectII& dan
ector dari ector& ectorTectorTD!'ectUU. Jika kita mempunyaistruktur data selain kedua 'enis terse!ut kita harus melakukankonversi data ke dalam salah satu !entuk struktur data terse!ut.Cara yan le!ih cerdas adalah mendefinisikan sendiri class yan
menimplement interface a!le*odel seperti classCustomera!le*odel diatas.
%etelah a!le*odel selesai didefinisikan kita tinal memanilmethod seta!le*odel dari o!'ect Ja!le& atau mem!uat o!'ect
Ja!le !aru menunakan constructor yan menerima arumena!le*odel. Contohnya seperti potonan kode di !awah ini :
JTable table = new JTable(new DefaultTableModel());JTable table1 = new JTable();table1.setModel(new DefaultTableModel());
J?ist adalah komponen swin yan mempunyai dua modelsekalius& ?ist*odel dan ?ist%election*odel. ?ist*odel diunakanuntuk mendefinisikan item/element yan dikandun oleh J?ist.%edankan ?ist%election*odel diunakan untuk mendefinisikan!aaimana representasi data 'ika ter'adi proses pemilihan di J?ist.
%eperti halnya a!le*odel& ?ist*odel mempunyai dua class yanmenimplement ?ist*odel& !stract?ist*odel danefault?ist*odel. 5ita !isa menunakan salah satu dari tia tipe
5/25/2018 Java Swing
49/129
KONSEPMVC | HALAMAN43
terse!ut untuk mem!uat o!'ect ?ist*odel. Cara pertama denanmem!uat class !aru yan menimplement ?ist*odel. Cara keduadenan mem!uat class !aru yan mene6tends !stract?ist*odeldan cara ketia denan lansun menunakan efault?ist*odel.
%truktur data J?ist tidak terlalu rumit seperti Ja!le& dan padaumumnya& cukup hanya denan menunakan efault?ist*odelsudah memenuhi se!aaian !esar ke!utuhan penunaan J?ist.
4erikut ini contoh !aaimana mem!uat ?ist*odel untuk datacustomer& contoh ini menunakan cara kedua untuk mem!uat
o!e'ct ?ist*odel& yaitu denan cara mem!uat class !aru yanmene6tends !stract?ist*odel :
public class CustomerListModel extends AbstractListModel{private ArrayList customer =
new ArrayList();public CustomerListModel(List cust){
customers.addAll(cust);}public Object getValueAt(int index) {
return customers.get(index);}public int getSize() { return customers.size(); }
}
$mplementasi ?ist*odel sanat mudah dan tidak serumita!le*odel& namun implementasi dari ?ist%election*odel sanatrumit& karena kita harus menimplementasi dua puluh !uahmethod. ?e!ih !aik menunakan implementasi standard dari?ist%election*odel yaitu efault?ist%election*odel.
5/25/2018 Java Swing
50/129
HALAMAN44 | JAVASWING
Menangani /vent
vent dan ?istener adalah implementasi dari pattern D!serverdalam Java. +attern D!server sanat !eruna diunakan untukmendesin komunikasi yan konsisten antara o!'ect yan !erdirisendiri dan o!'ect-o!'ect yan !erantun padanya.
D!server desin pattern meli!atkan dua o!'ect utama& o!'ectpertama !erlaku se!ai %u!'ect dan o!'ect lainya !erlaku se!aaiD!server. D!'ect %u!'ect merupakan pusat perhatian dari o!'ectD!server& peru!ahan keadaan dari o!'ect %u!'ect selalu dipantauoleh D!server.
D!server dapat melakukan reister-unreister terhadap %u!'ect.Jika D!server tertarik denan perilaku dan keadaan dari %u!'ect&D!server dapat mereister dirinya kepada %u!'ect. 4eitu 'uase!aliknya 'ika D!server tidak tertarik terhadap keadaan atauperilaku %u!'ect& D!server tidak perlu melakukan resistrasi ataukalau sudah terlan'ur reuister dapat melakukan unreister.
%u!'ect mempunyai !anyak aspek perilaku dan keadaan yan dapatdipantau oleh D!server. #ntuk setiap aspek& %u!'ect menyediakan
method untuk reister-unreister dan menyediakan interface yanharus diimplement oleh D!server yan inin memantau aspekterse!ut.
+ada satu titik tertentu& %u!'ect akan mem!eritahu (notify)D!server tentan perilaku atau keadaanya. %u!'ect akanmenumpulkan informasi tentan keadaan atau perilakunyakemudian menirimkan pesan kepada D!server lewat interface
yan telah disepakati keduanya& pola ini dikenal 'ua se!ai vent-+assin.
+attern D!server dimaksudkan untuk menurani keterantunansatu o!'ect terhadap o!'ect lain& istilah kerennya adalahecouplin. enan mekanisme reister-unreister& D!serverdapat secara le!ih leluasa memutuskan untuk memantau %u!'ect
tertentu atau tidak. *ekanisme notify memudahkan %u!'ectmem!eritahu keadaan dan perilakunya kepada D!server yansedan memantaunya.
i !aian !erikutnya kita akan melihat !aaimana patternD!server diimplementasikan dalam swin. kan di'elaskan pula!aaimana swin menimplementasikan mekanisme reister-unreister dan notify dalam menanani interaksi user terhadapkomponen swin.
5/25/2018 Java Swing
51/129
MENANGANIEVENT| HALAMAN45
+attern D!server meli!atkan dua o!'ect %u!'ect dan D!server&dalam swin D!server dikenal se!aai ?istener. 5emudian& ketika%u!'ect akan mem!eritahu (notify) D!server tentan apa yansedan ter'adi dalam o!'ect %u!'ect& ada satu informasi yan akandi-passin oleh %u!'ect ke D!server& informasi ini dise!ut se!aaivent o!'ect. %edankan ke'adian ketika %u!'ect melakukan notifykepada D!server dise!ut se!aai vent trierin.
ar pen'elasan diatas mudah dipahami& kita akan mem!uataplikasi sederhana yan menimplementasikan pattern D!server.
plikasi sederhana ini terdiri dari dua class utama yaitu %u!'ectdan D!server.
Class %u!'ect akan men'alankan se!uah loop tanpa !atas& di dalamloop terse!ut %u!'ect akan meminta input dari user !erupa se!uahkata yan diakhiri denan penekanan enter. 5etika user menekanenter& %u!'ect akan menotify D!server. alam proses notifikasiterse!ut& %u!'ect menumpulkan informasi tentan eventpemasukan kata oleh user& informasi terse!ut !erupa : kata apa
yan dimaksukkan dan o!'ect su!'ect dimana event pemasukankata terse!ut ter'adi (source). 5emudian D!server akan menerimainformasi dari %u!'ect dan mencetak informasi terse!ut ke
standard output. 4erikut ini tampilan dari aplikasi sederhana ini :type a word : ifnuprint from observer : first observer event from : subject observed key presed is ifnu
%u!'ect akan mencetak strin 8type a word : dan menunu useruntuk memasukkan satu kata dan menekan enter. *isalnya dalamcontoh diatas 8ifnu. 5emudian %u!'ect akan menhimpuninformasi tentan sum!er event (%u!'ect itu sendiri) dan kata yandiketikkan user (ifnu). %etelah itu& %u!'ect mem!eritahu (notify)D!server !ahwa telah ter'adi event pemasukan kata denanmenyertakan informasi yan telah dihimpun %u!'ect.
D!server menerima informasi dari %u!'ect !ahwa telah ter'adi
event pemasukan kata oleh user& selan'utnya D!server akanmen'alankan tindakan-tindakan untuk menanani event terse!ut.indakan terse!ut adalah : mencetak informasi D!server& source&dan kata yan dimasukkan oleh user.i dalam class %u!'ect terdapat field2. 5oleksi D!server (listeners);. 7ama (name)
5/25/2018 Java Swing
52/129
HALAMAN46 | JAVASWING
2. Constructor yan menerima parameter %trin& parameter inidiunakan se!aai penenal (name) dari o!'ect %u!'ect.
;. Beister-unreister D!server (reister?istener&remove?istener)
5/25/2018 Java Swing
53/129
MENANGANIEVENT| HALAMAN47
ini nanti yan akan dipanil oleh %u!'ect ketika event pemasukankata oleh user ter'adi di %u!'ect.
public interface KeyboardPressedListener { public void keyPressed(KeyboardPressedEvent e);}
Class D!server menimplement interface 5ey!oard+ressed?istenerdan nantinya akan didaftarkan ke su!'ect se!aai D!server.*ethod key+ressed diimplementasikan denan mencetak informasi
yan diperoleh dari %u!'ect ke standard output.
public class Observer implements KeyboardPressedListener{ private String name; public Observer(String name){ this.name = name; } public void keyPressed(KeyboardPressedEvent e) { System.out.println("print from observer : " +
name + "\n\tevent from : " + e.getSource() + "\n\tkey presed is " + e.getWord() );}}
Class 5ey!oard+ressedvent adalah Java 4ean !iasa yanmenyimpan informasi ke'adian pemasukan kata oleh user&didalamnya hanya ada field source dan word serta etter-settermethod untuk kedua field terse!ut.
public class KeyboardPressedEvent { private Object source;
private String word; public Object getSource() { return source; } public void setSource(Object src) { source = src;} public String getWord() { return word; } public void setWord(String wrd) { word = wrd; }}
%ampai disini& class-class diatas masih !erdiri sendiri dan !elumada class yan mempunyai method main. 7ah& disinilah kode class*ainClass untuk menyatukan semua o!'ect diatas men'adi aplikasiutuh.
5/25/2018 Java Swing
54/129
HALAMAN48 | JAVASWING
public class MainClass { public static void main(String[] str){ Subject subject =
new Subject("subject observed"); Observer observer =
new Observer("first observer"); subject.registerObserver(observer); subject.runProgram(); }}
?ankah-lankah dalam menunakan pattern D!server iniadalah :
2. *em!uat o!'ect su!'ect dari class %u!'ect
Subject subject = new Subject("subject observed");
;. *em!uat o!'ect o!server dari class D!server
Observer observer = new Observer("first observer");
5/25/2018 Java Swing
55/129
MENANGANIEVENT| HALAMAN49
et*odifiers. *ethod etctionCommand diunakan untukmenam!il command strin yan didefinisikan oleh J4utton.
i !aian se!elumnya kita telah !eker'a menunakan komponenswin& dan sudah !erlatih !aaimana menanani event klik mouseterhadap J4utton. *ari kita lihat lai aplikasi sederhana !erikut :
Contoh aplikasi sederhana yan menanani event actionvent
pada J4utton
*enanani klik mouse pada J4utton dalam 7et!eans cukup denanmemilih J4utton di Jendela esin kemudian klik kanan dan pilihmenu :
Events > Action > ActionPerformed
%etelah itu anda akan di!awa ke 'endela kode dan !aris !erikut iniakan di!uat secara otomatis oleh 7et!eans :
private void btnHitungActionPerformed(java.awt.event.ActionEvent evt) {
}
5emudian kita akan menempatkan kode untuk menananipenekanan tom!ol di !aian !awah !aris //DD. %e!enarnya7et!eans men-enerate !e!erapa lai kode di !aian yan tidakdapat diedit& !erikut ini cuplikanya :
btnHitung.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt){
btnHitungActionPerformed(evt);}
});
*ethod addction?isterner ini mempunyai funsi yan sama
denan method reister?istener pada class %u!'ect yan kita !ahasdi !aian se!elumnya. addction?isterner !erfunsi untukmendaftarkan D!server ke %u!'ect. +er!edaan ter!esar disiniadalah 7et!eans tidak mem!uat pu!lic class D!server !aru untukmenimplementasi interface ction?istener. etapi 7et!eansmem!uat anonymous innerclass yan menimplement interface
ction?istener.
+erhatikan petikan kode !erikut ini :
5/25/2018 Java Swing
56/129
HALAMAN50 | JAVASWING
new ActionListener() {public void actionPerformed(ActionEvent evt){
btnHitungActionPerformed(evt);}
>an dilakukan oleh kode diatas se!enarnya adalah:2. *em!uat Class !aru yan tidak punya nama (anonymous);. Class !aru terse!ut turunan dari D!'ect dan menimplement
interface ction?istener
5/25/2018 Java Swing
57/129
MENANGANIEVENT| HALAMAN51
*ethod et5eyChar diunakan untuk menentukan karakter apayan diwakili oleh tom!ol yan ditekan. Jika tom!ol yan ditekanadalah tom!ol modifiers maka method et5eyChar akanmenem!alikan karakter 5eyvent.C,BN#7F$7.
plikasi sederhana yan menanani penekanan tom!ol key!oard
#ntuk mem!uat aplikasi yan mendenarkan penekanan tom!olkey!oard seperti diatas lakukan lankah-lankah !erikut ini :
2. 4uat class JFrame !aru& !eri nama Frame5ey+ressed.
;. am!ahkan dua !uah J?a!el& !eri nama l!l%tatus danl!l5eyyped.
5/25/2018 Java Swing
58/129
HALAMAN52 | JAVASWING
Events > Key > keyReleased
E. Jendela Code akan ter!uka& modfikasi method form5eyBeleasedmen'adi seperti !erikut ini :
private void formKeyReleased(KeyEvent evt) {// TODO add your handling code here:if(evt.getKeyChar() == KeyEvent.CHAR_UNDEFINED) lblStatus.setText( "Anda melepaskan tombol : CHAR_UNDEFINED");else
lblStatus.setText("Anda melepaskan tombol : " +evt.getKeyChar());}
G. +ilih JFrame di Jendela esin& klik kanan& dan pilih menu :
Events > Key > keyTyped
21. Jendela Code akan ter!uka& modfikasi method form5eyypedmen'adi seperti !erikut ini :
private void formKeyTyped(KeyEvent evt) {// TODO add your handling code here:lblKeyType.setText("Anda mengetikkan tombol : " +
evt.getKeyChar());}
*ouse?istener mendenarkan interaksi mouse terhadap komponenswin. *ouse?istener dapat didaftarkan pada semua komponenswin. *ouse?istener mendenarkan event : mouse+ressed : event ini ter'adi ketika user menekan salah
satu tom!ol mouse diatas komponen swin. mouseBeleased : setelah tom!ol ditekan& komponen swin akan
menerima pelepasan tom!ol mouse. etapi 'ika tom!ol mousedilepaskan pada saat pointer mouse tidak !erada diatas
komponen swin& maka event ini tidak akan ter'adi. mouseClicked : event ini muncul ketika user melakukan clicktom!ol mouse diatas komponen swin.
mousentered : ketika mouse memasuki area diatas komponenswin& event ini akan dipicu.
mouse6ited : muncul ketika mouse akan meninalkan areadiatas komponen swin
5etika user menekan tom!ol mouse (click)& event mouse+resseddi!uat& kemudian mouseBeleased dan akhirnya mouseClicked
5/25/2018 Java Swing
59/129
MENANGANIEVENT| HALAMAN53
muncul terakhir.
*ouse*otion?istener 'ua dapat didaftarkan se!aai listener padasemua komponen swin. *ouse*otion?istener dipisahkan dari*ouse?istener karena penananan event mouse*ove yan le!ih!erat dan intensif. *ouse*otion?istener mendenarkan duaenvent: mouse*oved : ter'adi ketika user menerakkan mouse diatas
komponen swin mouseraed : ter'adi ketika user menekan tom!ol mouse
sekalius menerakkanya diatas komponen swin
%emua method diatas menerima arumen !erupa class*ousevent. *ethod etClickCount diunakan untuk menentukan
'umlah click yan ter'adi dalam waktu yan !erdekatan. *ethodetClickCount 'ua diunakan untuk menentukan apakah klik yanter'adi adalah sinle klik atau dou!le klik.
*ethod et4utton diunakan untuk menentukan tom!ol mana yanditekan oleh user. +ada umumnya mouse yan tersedia di pasaranmempunyai tia tim!ol yan dapat di klik& tom!ol kiri& tom!oltenah dan tom!ol kanan. *ethod et4utton akan menem!alikannilai *ousevent.4#D72 'ika tom!ol kiri ditekan&*ousevent.4#D7; 'ika tom!ol tenah ditekan dan*ousevent.4#D7< 'ika tom!ol kanan ditekan.
*ethod etL dan et> akan menem!alikan koordinat dimana*ousevent ter'adi. 5oordinat yan diunakan adalah koordinatrelatif. 5oordinat (1&1) !erada di po'ok kiri atas dari komponenswin& semakin ke!awah nilai > semakin !esar dan semakin kekanan nilai L semakin !esar. 7ilai koordinatnya dinyatakan dalamsatuan pi6el.
plikasi di !awah ini adalah se!uah JFrame yan mempunyaiJ?a!el di dalamnya. 5etika ter'adi event mouseClick danmouse*ove& J?a!el akan menampilkan dimana event terse!utter'adi. Jika event klik yan muncul& maka te6t dari J?a!el akan!erisi 8clicked at (6&y)& sedankan event move hanya akanmemunculkan koordinat 8(6&y) sa'a.
Contoh aplikasi sederhana yan menani *ousevent
?akukan lankah-lankah !erikut ini untuk mem!uat aplikasiseperti diatas :
5/25/2018 Java Swing
60/129
HALAMAN54 | JAVASWING
2. 4uat class JFrame !aru& !eri nama Frame*ouse*otion.
;. ?etakkan se!uah J?a!el !aru& !eri nama l!l%tatus.
Null Layout
?ankah ini !ertu'uan untuk mem!uat aar JFramemenunakan null layout. 5alau tidak menunakan null layoutkita tidak !isa meletakkan J?a!el pada sem!aran posisi.
=. +ilih kem!ali JFrame& klik kanan dan pilih menu
Events > Mouse > mouseClicked
. modifikasi kode pada Jendela Code yan tampil men'adi sepertidi !awah ini :
private void formMouseClicked(MouseEvent evt) {lblStatus.setText("clicked at (" + evt.getX() +
"," + evt.getY() + ")");lblStatus.setLocation(evt.getX(),evt.getY());
}
5ode diatas menanani penekanan tom!ol mouse& kemudianmenu!ah te6t J?a!el dan memindahkan J?a!el ke posisidimana event mouseClicked ter'adi.
0. +ilih JFrame lai di Jendela esin& klik kanan dan pilih menu :
Events > MouseMotion > mouseMoved
3. *odifikasi kode yan muncul pada Jendela Code men'adiseperti di !awah ini :
private void formMouseMoved(MouseEvent evt) {lblStatus.setText("(" + evt.getX() + "," +
evt.getY() + ")");lblStatus.setLocation(evt.getX(),evt.getY());
}
E. Compile dan 'alankan aplikasi di atas.
*asih !anyak lai vent-?istener yan disediakan oleh J5. ari!a! di atas kita sudah dapat menerti denan !aik konsep vent-?istener dan pattern D!server yan mendasarinya. enankemampuan ini kita !isa denan mudah menerti !aaimanaevent-listener yan lain !eker'a.
vent-?istener 'ua dapat di'alankan terhadap Java 4eanmenunakan +ropertyChane?istener dan +ropertyvent. 5onsepini dapat diunakan untuk menamati peru!ahan pada field Java4ean.
5/25/2018 Java Swing
61/129
KONEKSIDATABASEDENGANJDBC | HALAMAN55
Koneksi Database DenganJD(C
Java ata!ase Connectivity adalah +$ yan diunakan Java untukmelakukan koneksi denan aplikasi lain atau denan !er!aaimacam data!ase. J4C memunkinkan kita untuk mem!uataplikasi Java yan melakukan tia hal: konek ke sum!er data&menirimkan Kuery dan statement ke data!ase& menerima danmenolah resultset yan diperoleh dari data!ase.
J4C mempunyai empat komponen :
2. J4C +$
J4C +$ menyediakan metode akses yan sederhana kesum!er data relational (B4*%) menunakan pemroraman
Java. denan menunakan J4C +$& kita !isa mem!uatproram yan dapat meneksekusi %P?& menerima hasilBesult%et& dan menu!ah data dalam data!ase. J4C +$ 'ua
mempunyai kemampuan untuk !erinteraksi denan linkunanterdistri!usi dari 'enis sum!er data yan !er!eda-!eda.
J4C +$ adalah !aian dari Java +latform yan disertakandalam li!rary J5 maupun JB. J4C +$ sekaran ini sudahmencapai versi =.1 yan disertakan dalan J5 0.1. J4C +$=.1 di!ai dalam dua packae yaitu : 'ava.sKl dan 'ava6.sKl.
;. J4C river *anaer
Class river*anaer dari J4C !ertuas untuk mendefisikano!'ect-o!'ect yan dapat diunakan untuk melakukan koneksike se!uah sum!er data. %ecara tradisional river*anaertelah men'adi tulan punun arsitektur J4C.
5/25/2018 Java Swing
62/129
HALAMAN56 | JAVASWING
4rie ini menyediakan fasilitas J4C untuk melakukan koneksike sum!er data menunakan D4C (Dpen ata4aseConnectivity) driver. %e!aai catatan& anda perlu meload driverD4C di setiap komputer client untuk dapat menunakan!ride ini. %e!aai konsekuensinya& cara ini hanya cocokdilakukan di linkunan intranet dimana isu instalasi tidakmen'adi masalah.
enan keempat komponen yan dipunyainya& J4C men'adi toolsyan dapat diandalkan untuk melakukan koneksi& menam!il datadan meru!ah data dari !er!aai macam sum!er data. *odul ini
hanya akan mem!ahas dua komponen pertama dari keempatkomponen yan dipunyai oleh J4C& yaitu J4C +$ danriver*anaer. %um!er data yan diunakan adalah Belationalata!ase.
J4C memerlukan data!ase driver untuk melakukan koneksi kesuatu sum!er data. ata!ase driver ini !ersifat spesifik untuksetiap 'enis sum!er data. ata!ase driver !iasanya di!uat olehpihak pem!uat sum!er datanya& namun tidak 'aran 'uakomunitas atau pihak ketia menyediakan data!ase driver untukse!uah sum!er data tertentu.
+erlu dipahami sekali lai !ahwa data!ase driver !ersifat spesifikuntuk setiap 'enis sum!er data. *isalnya& ata!ase river *y%Klhanya !isa diunakan untuk melakukan koneksi ke data!ase *y%Kldan !eitu 'ua data!ase driver untuk +ostre %P? 'ua hanya !isadiunakan untuk melakukan koneksi ke data!ase +ostre %P?.
ata!ase driver untuk setiap 4*% pada umumnya dapatdidownload dari we!site pem!uat 4*% terse!ut. 4e!erapa
vendor 4*% menye!ut ata!ase driver ini denan se!utan JavaConnector (J/Connector). ata!ase driver !iasanya di!unkusdalam file yan !erekstensi 'ar. %etiap data!ase driver harusmenimplement interface 'ava.sKl.river.
*elakukan koneksi ke data!ase meli!atkan dua lankah: *eloaddriver dan mem!uat koneksi itu sendiri. Cara meload driver sanatmudah& pertama letakkan file 'ar data!ase driver ke dalamclasspath. 5emudian load driver denan menam!ahkan kode!erikut ini:
5/25/2018 Java Swing
63/129
KONEKSIDATABASEDENGANJDBC | HALAMAN57
Class.forName(com.mysql.jdbc.Driver);
7ama class data!ase driver untuk setiap 4*% !er!eda& anda !isamenemukan nama class terse!ut dalam dokumentasi driverdata!ase yan anda unakan. alam contoh ini& nama classdata!ase driver dari *y%Kl adalah com.mysKl.'d!c.river.
*emanil method Class.for7ame secara otomatis mem!uatinstance dari data!ase driver& class river*anaer secara otomatis
'ua dipanil untuk menelola class data!ase driver ini. Jadi andatidak perlu menunakan statement new untuk mem!uat instance
dari class data!ase driver terse!ut.
?ankah !erikutnya adalah mem!uat koneksi ke data!asemenunakan data!ase driver yan sudah diload tadi. Classriver*anaer !eker'a sama denan interface river untukmenelola driver-driver yan diload oleh aplikasi& 'adi dalam satusesi anda !isa meload !e!erapa data!ase driver yan !er!eda.
5etika kita !enar-!enar melakukan koneksi& J4C est %uite akanmelakukan serankaian tes untuk menentukan driver mana yanakan diunakan. +arameter yan diunakan untuk menentukandriver yan sesuai adalah #B?. plikasi yan akan melakukankoneksi ke data!ase menyediakan #B? penenal dari serverdata!se terse!ut. %e!aai contoh adalah #B? yan diunakanuntuk melakukan koneksi ke *y%Kl :
jdbc:mysql://[host]:[port]/[schema]
contoh konkritnya :
jdbc:mysql://localhost:3306/latihan
%etiap vendor 4*% akan menyertakan cara untuk menentukan#B? ini di dalam dokumentasi. nda tinal mem!aca dokumentasiterse!ut tanpa harus khawatir tidak menemukan informasi yananda perlukan.
*ethod river*anaer.etConnection !ertuas untuk mem!uatkoneksi:
Connection conn = DriverManager.getConnection(
jdbc:mysql://localhost:3306/latihan);
alam ke!anyakan kasus anda 'ua harus memasukkan parameterusername dan password untuk dapat melakukan koneksi ke dalamdata!ase. *ethod etConnection menerima #sername se!aaiparameter kedua dan pasword se!aai parameter ketia& sehinakode diatas dapat diru!ah men'adi :
5/25/2018 Java Swing
64/129
HALAMAN58 | JAVASWING
Connection conn =DriverManager.getConnection(
jdbc:mysql://localhost:3306/latihan,root,);
Jika salah satu dari driver yan diload !erhasil diunakan untukmelakukan koneksi denan #B? terse!ut& maka koneksi kedata!ase !erhasil dilaksanakan. Class Connection akan memeaninformasi koneksi ke data!ase yan didefinisikan oleh #B?terse!ut.
%etelah sukses melakukan koneksi ke data!ase& kita dapatmenam!il data dari data!ase menunakan perintah Kueryataupun melakukan peru!ahan terhadap data!ase. !aian !erikutini akan menerankan !aaimana cara menam!il danmemanipulasi data dari data!ase.
+roses penam!ilan data dari data!ase memerlukan suatu classuntuk menampun data yan !erhasil diam!il& class terse!ut harusmenimplement interface Besult%et.
D!'ect yan !ertipe Besult%et dapat mempunyai levelfunsionalitas yan !er!eda& hal ini terantun dari tipe dariresult set. ?evel funsionalitas dari setiap tipe result set di!edakan!erdasarkan dua area:
enan cara !aaimana result set itu dapat dimanipulasi
4aaimana result set itu menanani peru!ahan data yandilakukan oleh proses lain secara !ersamaan (concurrent).
J4C menyediakan tia tipe result set untuk tu'uan !er!eda:
2. >+NFDB9BND7?> : result set terse!ut tidak !isa !er'alanmundur& reslut set hanya !isa !er'alan ma'u dari !aris pertamahina !aris terakhir. result set hanya menam!arkan
keadaan data ketika Kuery di'alankan atau ketika data diterimaoleh resul set. Jika setelah itu ada peru!ahan data dalamdata!ase& result set tidak akan diupdate alias tidak adaperu!ahan dalam result set tipe ini.
;. >+N%CBD??N$7%7%$$ : result set dapat !er'alan ma'umundur. result set dapat !er'alan ma'u dari row pertamahina terakhir atau !ererak !e!as !erdasarkan posisi relatifatau a!solute.
5/25/2018 Java Swing
65/129
KONEKSIDATABASEDENGANJDBC | HALAMAN59
+N%CBD??N%7%$$ : result set dapat !er'alan ma'umundur. result set dapat !er'alan ma'u dari row pertamahina terakhir atau !ererak !e!as !erdasarkan posisi relatifatau a!solute.
$nstance dari o!'ect !ertipe Besult%et diperlukan untukmenampun hasil kem!alian data dari data!ase. %e!elum kita !isamemperoleh instance dari Besult%et& kita harus mem!uat instancedari class %tatement. Class %tatement mempunyai methode6ecutePuery yan diunakan untuk men'alankan perintah Kuerydalam data!ase kemudian menem!alikan data hasil eksekusi
Kuery ke dalam o!'ect Besult%et.
4erikut ini adalah contoh kode untuk mem!uat instance class%tatement& kemudian men'alankan Kuery untuk menam!il datadari data!ase yan hasilnya dipean oleh Besult%et :
Statement statement =conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResulSet rs =statement.executeQuery(select * from Customers);
Besult%et akan meletakkan kursornya (posisi pem!acaan !aris) dise!uah posisi se!elum !aris pertama. #ntuk menerakkan kursor
ma'u& mundur& ke suatu posisi relatif atau ke suatu posisi a!solutetertentu& unakan method-method dari Besult%et:
ne6t() -- menarahkan kursor ma'u satu !aris.
previous() -- menarahkan kursor mundur satu !aris.
first() -- menarahkan kursor ke !aris pertama.
last() -- menarahkan kursor ke !aris terakhir.
!eforeFirst() -- menarahkan kursor ke se!elum !aris pertama.
after?ast() -- menarahkan kursor ke setelah !aris terakhir.
relative(int rows) -- menarahkan kursor relatif dari posisinyayan sekaran. %et nilai rows denan nilai positif untuk ma'u&dan nilai neatif untuk mundur.
a!solute(int row7um!er) Q menarahkan kursor ke posisitertentu sesuai denan nilai row7um!er& dan tentu sa'anilainya harus positif.
$nterface Besult%et menyediakan method etter untuk menaksesnilai dari setiap kolom dalam !aris yan sedan aktif. +arameterfunsi etter !isa menerima nilai inde6 dari kolom ataupun namakolomnya. 7amun !eitu& penunaan nilai inde6 le!ih efisiendi!andin menunakan nama kolom.
5/25/2018 Java Swing
66/129
HALAMAN60 | JAVASWING
7ilai inde6 dimulai denan satu hina !anyaknya kolom.+enunaan nama kolom adalah case insensitive& artinya hurufkecil atau huruf !esar tidak men'adi masalah.
et%trin diunakan untuk menam!il kolom denan tiper datachar& varchar atau tipe data strin lainya. et$nt diunakan untukmenam!il kolom denan tipe data inteer.
4erikut ini dalah contoh proram lenkap dari melakukan koneksihina menam!il data dari data!ase.
Class.forName(com.mysql.jdbc.Driver);
Connection conn =DriverManager.getConnection(
jdbc:mysql://localhost:3306/latihan,root,);
Statement statement =conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResulSet rs =statement.executeQuery(select * from Customers);
while(rs.next()){System.out.println(rs.getInt(id));System.out.println(rs.getString(Nama));
}
*ethod e6ecutePuery hanya dapat men'alankan perintah %P?select& unakan method e6ecute#pdate untuk men'alankanperintah insert& update dan delete. ,asil dari eksekusi insert&update dan delete tidak menem!alikan result set& tetapimenem!alikan se!uah nilai inteer yan merepresentasikanstatus hasil eksekusi method e6ecute#pdate.
4erikut ini contoh insert& update dan delete :
result = statement.executeUpdate("update Customers set nama ='roby' wherenama='andy'");
result = statement.executeUpdate("delete Customers where nama='andy'");
*enunakan e6ecutePuery dan e6ecute#pdate sanat mudah danfleksi!le& namun sanat tidak efisien& +repared%tatementmenawarkan keunulan dalam !entuk efisiensi.
*emanil method e6ecute#pdate !erulan-ulan& misalnyamelakukan insert ratusan atau ri!uan !aris& sanat tidak efisien.
5/25/2018 Java Swing
67/129
KONEKSIDATABASEDENGANJDBC | HALAMAN61
,al ini dise!a!kan karena 4*% harus memproses setiap Kueryyan dikirimkan dalam !e!erapa lankah: memparsin Kuery&mencompile Kuery dan kemudian !aru meneksekusi Kueryterse!ut.
+repared%tatement menawarkan solusi yan le!ih !aik dalammenanani keadaan terse!ut. +repared%tatement menyaratkanKuery yan akan dieksekusi didefinisikan terle!ih dahulu ketika+repared%tatement di!uat. 5emudian Kuery terse!ut dikirimkan kedalam data!ase untuk dicompile terle!ih dahulu se!elumdiunakan. 5onsekuensinya& +repared%tatement !ukan hanya
mempunyai Kuery& tetapi mempunyai Kuery yan sudah dicompile.5etika +repared%tatement di'alankan& 4*% tidak perlumelakukan kompilasi ulan terhadap Kuery yan di'alankan+repared%tatement. ,al inilah yan menye!a!kan+repared%tatement 'auh le!ih efisien di!andinkan menunakanmethod %tatement.e6ecute#pdate.
4erikut ini contoh pem!uatan +repared%tatement menunakanclass Connection yan telah di!uat se!elumnya :
PreparedStatement ps = conn.prepareStatement(update T_PERSON set name = ? where name = ?);
+erhatikan tanda R yan ada dalam Kuery diatas& tanda R dise!utse!aai parameter. 5ita !isa mem!erikan nilai yan !er!eda kedalam parameter dalam setiap pemanilan +repared%tatement.
*ethod set%trin& setFloat& set$nt dan !e!erapa method laindiunakan untuk memasukkan nilai dari setiap parameter. *ethodterse!ut mempunyai dua parameter& parameter pertama adalah int
yan diunakan untuk menentukan parameter +repared%tatementmana yan akan di!eri nilai. +arameter kedua adalah nilai yanakan dimasukkan ke dalam +repared%tatement& tipe data dariparameter kedua terantun dari method yan diunakan.4erdasarkan kode diatas& !erikut ini contoh penunaan method+repared%tatement.set%trin :
ps.setString(1,andy);ps.setString(2,rizal);
5ode diatas mem!erikan contoh !aaimana memasukkan nilai ke
dalam parameter +repared%tatement. 4aris pertama memasukkan%trin 8andy ke dalam parameter pertama dan !aris keduamemasukkan %trin 8rial ke parameter kedua. %ehinapemanilan Kuery oleh +repared%tatement !erdasarkan kodediatas sama denan Kuery statement di !awah ini :
update T_PERSON set name = 'andy' where name = 'rizal'
4erikut ini contoh lenkap penunaan +repared%tatement untukmelakukan update dan insert data :
5/25/2018 Java Swing
68/129
HALAMAN62 | JAVASWING
PreparedStatement pInsert = conn.prepareStatement("insert into Person(name) values(?)");
pInsert.setString(1,"dian");pInsert.executeUpdate();PreparedStatement pUpdate = conn.prepareStatement(
"update Person set name=? where name=?");pUpdate.setString(1,"andry");pUpdate.setString(2,"andri");pUpdate.executeUpdate();
alam contoh diatas& insert dan update data hanya dilaksanakansekali sa'a& hal ini tidak mem!erikan am!aran yan tepat untukmelihat keunulan +repared%tatement di!andinkan%tatement.e6ecute#pdate.
*isalnya kita inin men-insert seratus !aris data dalam se!uahloop& kita !isa menunakan fasilitas !atc e6ecution dari+repared%tatement. !atch e6ecution menumpulkan semuaeksekusi proram yan akan dilaksanakan& setelah semuanyaterkumpul !atch e6ecution kemudian menirimkan kumpulaneksekusi proram secara !ersamaan ke 4*% dalam satu
kesatuan. *etode ini sanat efisien karena menurani overheadyan diperlukan proram untuk !erkomunikasi denan 4*%.
alam contoh di !awah ini kita akan menunakan !atch e6ecutionuntuk melakukan insert data se!anyak seratus kali.
PreparedStatement pInsert = conn.prepareStatement("insert into Person(nama) values(?)");
for(int i=0;i
5/25/2018 Java Swing
69/129
KONEKSIDATABASEDENGANJDBC | HALAMAN63
karena ada data!ase yan mendukun transaction dan ada puladata!ase yan tidak mendukun transaction. *y%P? mendukuntransaction 'ika kita menunakan $nno4 se!aai sistem ta!lenya&kalau kita menunakan *y$%* maka transaction tidakdidukun.
ransaction merupakan konsep pentin dari data!ase. ransactionmemastikan peru!ahan data dilaksanakan denan kaidah C$(tomicity& Consistency& $solation& ura!ility). 5aidah inimemastikan semua proses peru!ahan data !er'alan secara !enar&
'ika ada yan salah maka semua peru!ahan dalam satu kesatuan
loika harus di!atalkan (roll!ack).
*ari kita evaluasi kode diatas aar menunakan transaction&sehina 'ika satu proses insert aal& maka semua insert yandilaksanakan se!elumnya akan di!atalkan :
try{connection.setAutoCommit(false);PreparedStatement pInsert = conn.prepareStatement(
"insert into Person(nama) values(?)");for(int i=0;i
5/25/2018 Java Swing
70/129
HALAMAN64 | JAVASWING
diunakan untuk aplikasi we!.
+enerapan konsep separation of concern secara disiplin& dapatmenhasilkan kode proram yan dapat dites secara otomatismenunakan J#nit atau 4#nit. #nit testin merupakanparamater utama dalam menentukan apakah kode proram yankita hasilkan mempunyai mutu yan tini atau tidak. Cover