Java Swing

download Java Swing

of 129

Transcript of Java Swing

  • 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&parameter 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