PENULISAN ILMIAH
PEMBUATAN APLIKASI CARE REGISTRY MENGGUNAKAN J2SE Nama NPM Fakultas Jurusan Pembimbing
: Hari Sulistio : 504 07 401 : Teknologi Industri : Teknik Informatika : Deasy Indayanti, SKom., MMSI.
Diajukan Guna Melengkapi Sebagian Syarat Mencapai Jenjang D III/Setara Sarjana Muda Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Gunadarma 2010-2011
PERNYATAAN ORIGINALITAS DAN PUBLIKASI
Saya yang bertanda tangan dibawah ini,
Nama
: Hari Sulistio
NPM
: 50407401
Judul PI
: Pembuatan Aplikasi Care Registry Menggunakan J2SE
Tanggal Sidang
:
Tanggal Lulus
:
Menyatakan bahwa tulisan ini adalah merupakan hasil karya saya sendiri dan dapat dipublikasikan sepenuhnya oleh Universitas Gunadarma. Segala kutipan dalam bentuk apa pun telah mengikuti kaidah dan etika yang berlaku. Mengenai isi dan tulisan adalah merupakan tanggung jawab penulis, bukan Universitas Gunadarma.
Demikian pernyataan ini dibuat dengan sebenarnya dan dengan penuh kesadaran.
Jakarta, Januari 2011
(Hari Sulistio)
ii
LEMBAR PENGESAHAN
Judul PI
: Pembuatan Aplikasi Care Registry Menggunakan J2SE
Nama
: Hari Sulistio
NPM
: 50407401
NIRM
:
Tanggal Sidang
:
Tanggal Lulus
:
Menyetujui
Pembimbing
Koordinator PI
( Deasy Indayanti, SKom., MMSI. )
( Meilani B. Siregar, SKom., MMSI.)
Ketua Jurusan
( Dr. Ing. Adang Suhendra, SSi., SKom., MSc. )
iii
ABSTRAKSI
Hari Sulistio.50407401. Pembuatan Aplikasi Care Registry Menggunakan J2SE PI, Jurusan Teknik Informatika, Fakultas Teknologi Industri, Universitas Gunadarama, 2011 Kata Kunci : Registry, J2SE. ( xiii + 67 halaman + lampiran) Dalam penulisan ilmiah ini penulis mencoba untuk membuat sebuah aplikasi Care Registry menggunakan bahasa pemrograman Java NetBeans IDE 6.8 J2SE. Fungsi-fungsi registry yang terdapat pada aplikasi ini mencakup mengatifkan atau menon-aktifkan beberapa fungsi dengan mengubah value dari key yang ada pada registry Windows. Penulis membuat aplikasi ini dengan tujuan untuk membantu para pengguna dalam merawat registry komputer dengan mudah dan sederhana. Mudah karena aplikasi ini berjalan pada desktop komputer dan sederhana karena aplikasi ini didesain dengan menggunakan checkbox yang mempunyai keterangan fungsi yang jelas yang dapat dipilih langsung untuk mengatur value key registry yang diinginkan pengguna.
Daftar Pustaka (2007 – 2011)
iv
KATA PENGANTAR
Assalamu’alaikum Wr.Wb. Puji syukur penulis panjatkan kepada Allah SWT, yang telah memberikan rahmat dan hidayahnya sehingga penulis dapat menyelesaikan penulisan ilmiah yang diberi judul “Pembuatan Aplikasi Care Registry Menggunakan J2SE”. Adapun penulisan ini diajukan untuk memenuhi sebagian syarat mencapai jenjang D III / setara Sarjana Muda pada Jurusan Teknik Informatika, Fakultas Teknik Industri, Universitas Gunadarma. Dalam
kesempatan
ini
perkenankanlah
penulis
menyampaikan
penghargaan dan ucapan terima kasih yang sebesar-besarnya atas dorongan dan bantuan yang telah diteruma baik moril maupun materiil kepada : 1.
Ibu Prof. Dr. E.S. Margianti, SE., MM., selaku Rektor Universitas Gunadarma.
2.
Bapak Prof. Drs. Syahbuddin, MSc., Ph.D., selaku Dekan Fakultas Teknologi Industri.
3.
Bapak Dr. Ing. Adang Suhendra, SSi., SKom., MSc., selaku Ketua Jurusan Teknik Informatika.
4.
Ibu Meilani B. Siregar, SKom., MMSI., selaku Koordinator Penulisan Ilmiah Fakultas Teknologi Industri.
5.
Ibu Deasy Indayanti, SKom., MMSI., selaku pembimbing penulis yang telah membimbing penulis dalam menyelesaikan penulisan ini.
6.
Kedua Orang Tua yang telah memberikan dukungan dan doanya.
7.
Semua pihak yang telah membantu, memotivasi, dan memberikan dukungan hingga terselesaikannya penulisan ini yang tidak dapat disebutkan satupersatu. Penulis juga ingin menyampaikan, bahwa penulisan ini masih jauh dari
sempurna. Oleh karena itu, kritik, saran, dan masukan sangat penulis harapkan untuk perbaikan pada penulisan selanjutnya.
v
Pada akhirnya penulis berharap semoga penulisan ini bermanfaat bagi pembaca pada umumnya dan pecinta ilmu pengetahuan pada khususnya.
Wassalamu’alaikum Wr.Wb.
Jakarta, Januari 2011
Penulis
vi
DAFTAR ISI
Halaman HALAMAN JUDUL ………………………………………………………….
i
LEMBAR ORIGINALITAS DAN PUBLIKASI …………………………….
ii
LEMBAR PENGESAHAN …………………………………………………..
iii
ABSTRAKSI …………...……………………………………………………
iv
KATA PENGANTAR ………………………………………………………..
v
DAFTAR ISI …………………………………………………………………
vii
DAFTAR TABEL …………………………………………………………….
x
DAFTAR GAMBAR …………………………………………………………
xi
DAFTAR LAMPIRAN ………………………………………………………. xiii 1. PENDAHULUAN …………………………………………………...........
1
1.1. Latar Belakang …………………………………………………….....
1
1.2. Batasan Masalah ……………………………………………………..
1
1.3. Tujuan Penulisan ……………………………………………………..
2
1.4. Metode Penelitian …………………………………………………....
2
1.5. Sistematika Penulisan ………………………………………………..
3
2. LANDASAN TEORI ……...……………………………………………..
4
2.1. Java …..……………………………………………………………...
4
2.1.1. Kelebihan Java ……………………………………………….
5
2.1.2 Fitur-Fitur Java ………………………………………………
7
2.1.3. Variabel dalam Java …………………………………………
8
2.1.3.1. Penamaan Variabel dan Scope Variabel ……………
12
2.1.4. Operator dalam Java …………………………………………
13
2.1.4.1. Operator Aritmatik …………………………………
13
2.1.4.2. Operator Bitwise …………………………………...
13
2.1.4.3. Operator Relasi ……………………………………..
13
2.1.4.4. Operator Logika ……………………………………
14
vii
2.1.5. Control Flow dalam Java …………………………………….
14
2.1.5.1. Operasi Pengulangan ………………………………..
14
2.1.5.2. Operasi Kondisional ………………………………...
15
2.1.6. Break, Label, Return, Continue ……………………………...
16
2.2. Java 2 Standard Edition ………………………………………….....
17
2.2.1. Gambaran J2SE ……………………………………………...
17
2.2.2. Java Class-Library …………………………………………...
18
2.3. Swing …………………………………………………………….….
19
2.3.1. Sejarah Swing …………………………………………….….
20
2.3.2. Arsitektur Swing ………...…………………………………..
20
2.3.3. Komponen Dasar Swing ……………………………………..
22
2.4. AWT …………………………………………………………………
22
2.4.1. Sejarah AWT …………………………………………………
23
2.4.2 Arsitektur AWT ………………………………………………
23
2.5. NetBeans IDE 6.8 …………………………………………………..
24
2.5.1. Langkah Awal Menjalankan Program NetBeans 6.8 ………..
24
2.5.2. Komponen NetBeans 6.8 …………………………………….
27
2.6. Registry ……………………………………………………………..
29
2.6.1. Struktur Registry …………………………………………….
30
2.6.1.1. HKEY_LOCAL_MACHINE ……………………….
31
2.6.1.2. HKEY_CURRENT_USER …………………………
32
2.6.1.3. HKEY_USERS ……………………………………..
33
2.6.1.4 HKEY_CURRENT_CONFIG ……………………….
34
2.6.1.5 HKEY_CLASSES_ROOT …………………………..
34
2.6.2. Jenis Data Registry …………………………………………..
35
2.6.3. Registry Editor Windows ……………………………………
37
2.7. Storyboard ………………………………………...………………..
39
3. PERANCANGAN DAN IMPLEMENTASI ……………………………
41
3.1. Perencanaan Aplikasi ……………………………………..….…….
41
3.2. Perancangan Aplikasi …………………………………….…..…….
41
3.2.1. Skema Rancangan Aplikasi ………………………………….
41
viii
3.2.2. Flowchart …………………………………………………….
42
3.2.3. Storyboard …………………………………………………...
43
3.2.4. Spesifikasi Perangkat Yang Diperlukan ……………………..
44
3.3. Perancangan Tampilan ………………………………………….…..
44
3.3.1. Perancangan Tampilan Menu Fungsi Registry ………………
44
3.3.2. Perancangan Tampilan Help …………………………………
46
3.3.3. Perancangan Tampilan About ………………………………..
48
3.4. Proses Instalasi ………………………………….……..…………....
49
3.4.1. Instalasi JDK 6 ………………………………………………..
49
3.4.2. Instalasi NetBeans IDE 6.8 …………………………………...
50
3.5. Langkah Pembuatan Aplikasi ……………………….………….…..
54
3.5.1. File Tambahan yang Diperlukan ……………………………..
54
3.5.2. Pembuatan Class Utama ……………………………………..
56
3.5.3. Pembuatan Tampilan Menu Fungsi Registry ………………..
57
3.5.4. Pembuatan Tampilan Help …………………………………..
61
3.5.5. Pembuatan Tampilan About ………………………………....
62
Uji Coba Aplikasi ……………………………………..…………...
63
4. PENUTUP …………………….………………………………………....
66
DAFTAR PUSTAKA ………………………………………………………..
67
3.6.
ix
DAFTAR TABEL
Halaman Tabel 2.1 Tipe Data Integer ………………………………………………… 10 Tabel 2.2 Tipe Data Floating Point …………………………………………
10
Tabel 2.3 Tipe Data Char, Karakter Khusus ………………………………..
11
Tabel 2.4 Tabel Package pada J2SE ………………………………………..
18
x
DAFTAR GAMBAR
Halaman Gambar 2.1 Platform Java 2 ..…………………………………………….. 4 Gambar 2.2 Tools Dasar JDK …………………………………………….
18
Gambar 2.3 New Project NetBeans ………………………………………
25
Gambar 2.4 New Java Application ……………………………………….
25
Gambar 2.5 New Jframe Form ……………………………………………
26
Gambar 2.6 Layar Project NetBeans IDE 6.8 ……………………………
26
Gambar 2.7 Component Pallete ………………………………………......
27
Gambar 2.8 Form Kerja NetBeans ……………………………………….
28
Gambar 2.9 Source Editor ……………………………………………......
28
Gambar 2.10 Inspector ……………………………………………….......
29
Gambar 3.1 Skema Rancangan Aplikasi …………………………………
41
Gambar 3.2 Flowchart ……………………………………………………
42
Gambar 3.3 Storyboard Aplikasi …………………………………………
44
Gambar 3.4 Rancangan Tampilan Menu Fungsi Registry ……………….
46
Gambar 3.5 Rancangan Tampilan Help ………………………………….
47
Gambar 3.6 Rancangan Tampilan About ………………………………..
48
Gambar 3.7 Halaman License Agreement JDK 6 Update 18 …………...
49
Gambar 3.8 Halaman Custon Setup ……………………………………..
49
Gambar 3.9 Halaman Destination Folder JRE 6 ………………………...
50
Gambar 3.10 Halaman Proses Instalasi JDK 6 ……………………….....
50
Gambar 3.11 Halaman Konfirmasi Instalasi NetBeans IDE 6.8 ……......
51
Gambar 3.12 Halaman License Agreement NetBeans IDE 6.8 ………....
51
Gambar 3.13 Halaman Folder Destination NetBeans IDE 6.8 ………….
52
Gambar 3.14 Halaman Instalasi GlassFish v3 …………………………..
52
Gambar 3.15 Halaman Konfigurasi Instalasi NetBeans IDE 6.8 dan GlassFish v3 ……………………………………………....
53
Gambar 3.16 Halaman Proses Instalasi NetBeans IDE 6.8 ……………..
53
xi
Gambar 3.17 Halaman Setup Complete Instalasi NetBeans IDE 6.8 ……
54
Gambar 3.18 Tampilan jRegistryKey.dll Pada Folder System32 …….....
55
Gambar 3.19 Tampilan Membuka Properti Project ……………………..
55
Gambar 3.20 Tampilan Properti Project …………………………………
56
Gambar 3.21 Tampilan Browse jRegistryKey.jar ……………………….
56
Gambar 3.22 Tampilan Menu Fungsi Registry ………………………….
63
Gambar 3.23 Tampilan Checkbox Dipilih ………………………………
64
Gambar 3.24 Tampilan Pesan yang Muncul …………………………….
64
Gambar 3.25 Tampilan Help …………………………………………….
65
Gambar 3.26 Tampilan About …………………………………………..
65
xii
DAFTAR LAMPIRAN
Halaman LAMPIRAN LISTING PROGRAM ……………………………………. L- 1 LAMPIRAN OUTPUT PROGRAM …………………………………….
xiii
L-41
1. PENDAHULUAN
1.1.
Latar Belakang Registry Windows adalah pusat basis data untuk pengaturan konfigurasi
aplikasi dan informasi lainnya yang diperlukan oleh aplikasi. Semua pengaturannya diatur dalam bentuk key. Tiga hal yang dapat dilakukan di dalam registry
yaitu:
membaca,
menulis
dan
menghapus
key.
Registry dapat dijalankan dengan cara menuliskan regedit pada menu run. Penggunaan registry pada komputer biasanya untuk melakukan pengaturan yang bersifat sistematik. Penggunaan yang salah dapat mengakibatkan gangguan pada sistem komputer. Penggunaan regedit(registry editor) yang kurang efisien akan mengganggu sistem dan akan berdampak berkurangnya kinerja sistem pada Windows. Berdasarkan alasan tersebut, penulis berinisiatif untuk membuat sebuah aplikasi Care Registry yang dapat dijalankan ke dalam desktop komputer dengan mudah, karena sebagian besar para user kurang memperhatikan atau merawat registry dikarenakan penggunaan yang cukup rumit dengan key yang mewakili suatu fungsi pada sistem Windows. Fungsi dari aplikasi ini adalah memodifikasi nilai suatu key dalam registry untuk mengaktifkan atau menon-aktifkan suatu fungsi key pada sistem komputer. Aplikasi ini berfokus pada fungsi key yang ada pada root registry bagian HKEY_LOCAL_MACHINE dan HKEY_CURRENT_USER. Berdasarkan uraian diatas, pada perancangan ini penulis memberi judul Aplikasi Care Registry Menggunakan J2SE.
1.2.
Batasan Masalah Aplikasi Care Registry ini mempunyai fungsi untuk memodifikasi
nilai(value) dari beberapa key yang ada pada root HKEY_LOCAL_MACHINE dan HKEY_CURRENT_USER dengan tampilan sederhana, yang terdiri dari checkbox yang mewakili key dan sebuah button.
1
2
Pembuatan aplikasi ini menggunakan bahasa pemrograman Java NetBeans IDE 6.8, karena dalam aplikasi NetBeans terdapat bermacam fasilitas yang dibutuhkan dan mempermudah pembuatan aplikasi ini.
1.3.
Tujuan Penulisan Secara umum penulisan ini bertujuan untuk membuat sebuah aplikasi
dekstop yang membantu user dalam merawat registry windows yang memiliki cukup banyak pengaturan dengan sederhana. Adapun tujuan khusus penulis dari pembuatan penulisan ini adalah untuk memenuhi penulisan ilmiah(PI) dan sebagai media pembelajaran yang menambah wawasan dalam membuat aplikasi dekstop dengan bahasa pemrograman J2SE.
1.4.
Metode Penelitian Metode yang dilakukan penulis yang pertama adalah mengumpulkan
materi-materi berdasarkan referensi seperti buku ilmu komputer dan mencari materi dari berbagai artikel dari internet mengenai bahan-bahan pembentuk regristry untuk menunjang pembuatan aplikasi Care Registry. Langkah kedua yang dilakukan penulis adalah langkah pembuatan aplikasi CareRegistry, pertama penulis merancang tampilan form interface dengan checkbox dan button. Langkah ketiga, penulis mengimplementasikan ke dalam bahasa pemrograman yang telah dipilih yaitu NetBeans 6.8 J2SE. Dimana di dalamnya terdapat coding yang nantinya akan membentuk sebuah aplikasi yang penulis inginkan. Perangkat keras yang digunakan oleh penulis adalah satu unit computer dengan spesifikasi: processor Intel Pentium Dual Core, Memori 1 GB, kartu grafis NVIDIA GeForce 7300GT, dan harddisk 160 GB. Perangkat lunak yang digunakan adalah sistem operasi Microsoft Windows Vista Ultimate, NetBeans 6.8, Microsoft Office Visio.
3
1.5.
Sistematika Penulisan Adapun sistematika penulisan yang akan disajikan dalam penulisan ini
adalah sebagai berikut : PENDAHULUAN, mengemukakan latar belakang masalah, rumusan masalah, batasan masalah, tujuan penulisan, metode penulisan dan sistematika penulisan. LANDASAN TEORI, menjelaskan teori-teori yang berhubungan dengan penulisan ini, yang sangat membantu penyelesaian masalah dan perancangan program. PERANCANGAN DAN IMPLEMENTASI, menjelaskan mengenai perancangan-perancangan yang dilakukan dalam membuat program aplikasi beserta
konfigurasi
perangkat
lunak yang digunakan dan menjelaskan
implementasi dari program aplikasi ini yang dibuat dengan menggunakan NetBean 6.8 J2SE. PENUTUP, menjelaskan kesimpulan-kesimpulan dari hasil penulisan beserta saran-saran untuk penyempurnaan dan pengembangan selanjutnya.
2. LANDASAN TEORI
2.1
Java Sun mendefinisikan Java sebagai nama sebuah teknologi untuk membuat
dan menjalankan perangkat lunak pada komputer standalone ataupun pada lingkungan jaringan. Sun memperkenalkan nama “Java 2”(J2) yaitu generasi kedua dari platform Java pada Desember 1998, kemudian diterapkan untuk seluruh edisi Java yang masing-masing memiliki fungsi tujuan tertentu dan untuk lingkungan komputasi yang berbeda-beda, yaitu: o Standard Edition(J2SE) merupakan inti dari bahasa pemrograman Java yang diidesain untuk komputer desktop dan komputer workstations. o Enterprise Edition(J2EE) ditujukan untuk aplikasi berbasis server dengan built-in yang mendukung untuk servlets. JSP, dan XML. o Micro Edition(J2ME) didesain untuk piranti mobile dengan memori, layar display dan power pemrosesan yang terbatas.
Gambar 2.1 Platform Java 2
4
5
2.1.1 Kelebihan Java Java
memiliki
beberapa
kelebihan
dibandingkan
dengan
bahasa
pemrograman lainnya. Kelebihan tersebut diantaranya : 1.
Sederhana dan Ampuh Java dirancang untuk mudah dipelajari, terutama bagi programmer yang telah mengenal C/C++ akan mudah sekali untuk berpindah ke Java. Pemakai dapat belajar membuat program dengan Java secara cepat jika telah memahami konsep dasar pemrograman berorientasi objek. Java memberi programmer kemampuan untuk menuangkan semua ide, karena bahasa pemrograman ini bukan merupakan scripting language (bahasa naskah) yang menghilangkan kemampuan programmer untuk berinovasi, tetapi dengan cara berorientasi objek yang mudah dan jelas.
2. Aman Java dirancang sebagai bahasa pemrograman yang handal dan aman. Aplikasi-aplikasi yang dibangun dengan bahasa Java sangat handal dengan manajemen memori yang bagus. Aplikasi Java juga dikenal sangat secure, yaitu kasus-kasus seperti buffer everflow yang umumnya menjadi lubang keamanan aplikasi-aplikasi berbasis C/C++ tidak terjadi di Java, karena pengaturan keamanannya yang bagus. 3.
Berorientasi-Objek Java merupakan bahasa pemrograman berorientasi objek dan bukan turunan langsung dari bahasa pemrograman manapun, juga sama sekali tidak kompetibel dengan semuanya. Java memiliki keseimbangan, menyediakan mekanisme peng-class-an sederhana, dengan model antar muka dinamik yang intuitif hanya jika diperlukan.
4. Kokoh Kesalahan sering terjadi pada saat kompilasi karena Java merupakan bahasa pemrograman yang sensitif dalam hal deklarasi dan tipe data. Oleh karena hal tersebut, Java memiliki batasan agar dapat menemukan kesalahan lebih cepat saat mengembangkan program yaitu dengan langsung memeriksa program saat ditulis, dan sekali lagi ketika program di jalankan. Hal ini akan
6
lebih menghemat waktu jika dibandingkan dengan keharusan menjalankan program terlebih dahulu dan memeriksa semua bagian program untuk melihat ketidakcocokan dinamis selama program berjalan. 5. Interaktif Java memiliki kemampuan yang memungkinkan program melakukan beberapa hal pada saat bersamaan, tanpa harus kesulitan menangani proses yang akan terjadi selanjutnya. Jalinan program-program Java yang mudah digunakan memungkinkan programmer untuk memikirkan pembuatan perilaku khusus, tanpa harus mengintegrasikan perilaku tersebut dengan model pemrograman global yang mengatur perulangan kejadian. 6.
Netral Terhadap Berbagai Arsitektur Java telah mengambil beberapa keputusan yang sulit dalam pembuatan bahasa Java dan bagaimana program dijalankan, jadi anda dapat sepenuhnya percaya “tulis sekali, jalan di mana saja, kapan saja, selamanya”.
7.
Terinterpretasi dan Berkinerja-Tinggi Java dirancang untuk tetap berkinerja baik pada CPU yang tidak terlalu kuat. Walaupun Java merupakan bahasa terinterpretasi, kode-kode Java telah dirancang dengan hati-hati sehingga mudah diterjemahkan ke dalam bahasa asli suatu mesin untuk menghasilkan kinerja yang tinggi. Java dilengkapi keajaiban lintas-platform yang luar biasa dengan kompilasi ke dalam representasi langsung yang disebut kode-byte Java (Java byte-code), yang dapat diterjemahkan oleh sistem manapun yang memilki program Java didalamnya. Sebagai sebuah platform, Java terdiri atas dua bagian utama, yakni : o
Java virtual machine (jvm)
o
Java application programming interface (Java api)
Pada dasarnya, ada berbagai macam platform tempat aplikasi-aplikasi perangkat lunak (software) dieksekusi seperti microsoft windows, unix, linux, netware, macintosh, dan os/2. Namun, aplikasi-aplikasi yang berjalan pada suatu platform (misalnya windows) tidak akan bisa dijalankan di platform yang lain (misalnya linux) tanpa usaha kompilasi ulang, bahkan pengubahan
7
kode program. Aplikasi Java tidak perlu dikompilasi ulang jika telah berbeda dengan paltform saat kompilasi, karena aplikasi Java dijalankan di atas Java virtual machine (jvm). Saat ini Java platform telah ada pada berbagai sistem operasi, antara lain: o
Windows
9.x/NT/2000/XP/
Vista/7
o
Hpux
o
Hitachi os
o
Sun solaris
o
Aix
o
Macos
o
Irix
o
Novell netware 4.0
o
Unixware (sco)
Berbicara kecepatan, aplikasi Java kalah cepat dibandingkan dengan aplikasi yang native code karena Java berjalan di atas jvm sedangkan aplikasi native, misalnya file *.exe, langsung berjalan di atas perangkat keras yang bersangkutan. Namun, hal ini bisa ditekan dan tak jadi masalah lagi dengan algoritma yang bagus dan dukungan hardware, misal memori (ram) yang baik.
2.1.2. Fitur-Fitur Java Java API menyediakan beberapa fitur yang menarik bagi yang ingin mengembangkan aplikasi menggunakan Java, antara lain sebagai berikut :
Java applet Java applet merupakan program Java yang berjalan di atas browser. Dengan menggunakan Java applet, maka halaman html akan lebih dinamis dan menarik, sangat cocok untuk pengembangan aplikasi-aplikasi berbasis web.
Java networking Java networking merupakan sekumpulan api (application programming interface). Yang menyediakan fungsi-fungsi untuk aplikasi-aplikasi jaringan. Java networking menyediakan akses untuk tcp, udp, ip address dan url. Java networking tidak menyediakan akses untuk icmp dikarenakan alasan keamanan dan pada kondisi umum hanya administrator (root) yang bisa memanfaatkan protokol icmp.
8
Java database connectivity (jdbc) Jdbc menyediakan sekumpulan api yang dapat digunakan untuk mengakses database seperti oracle, mysql, postgresql, microsoft sql server.
Java security Java security menyediakan sekupulan api untuk mengatur security dari aplikasi Java baik secara high-level ataupun low-level, seperti public private key management dan certificates.
Java swing Java swing menyediakan sekumpulan api untuk membangun aplikasiaplikasi gui (graphical user interface) dan model gui yang diinginkan bisa bermacammacam, bisa model Java, model motif/cde atau model yang dependent terhadap platform yang digunakan.
Java rmi Java rmi menyediakan sekumpulan api untuk membangun aplikasiaplikasi Java yang mirip dengan model rpc (remote procedure call) jadi object-object Java bisa di-call (dipanggil) secara remote (acak) pada jaringan komputer.
Java 2d/3d Java 2d/3d menyediakan sekumpulan api untuk membangun grafik-grafik 2d/3d yang menarik dan juga akses ke printer.
Java server pages Berkembang dari Java servlet yang digunakan untuk menggantikan aplikasiaplikasi cgi, jsp (Java server pages) yang mirip asp dan php merupakan alternatif terbaik untuk solusi aplikasi internet.
Jni (Java native interface) Jni menyediakan sekumpulan api yang digunakan untuk mengakses fungsifungsi pada library (*.dll atau *.so) yang dibuat dengan bahasa pemrograman yang lain seperti C, C++, dan basic.
Java sound Java sound menyediakan sekumpulan api untuk manipulasi sound.
9
Java idl + corba Java idl (interface definition language) menyediakan dukungan Java untuk implementasi corba (common object request broker) yang merupakan model distributed-object untuk solusi aplikasi besar di dunia networking.
Java card Java card utamanya digunakan untuk aplikasi-aplikasi pada smart card, yang sederhana wujudnya seperti sim card pada handphone.
Jtapi (Java telephony api) Java telephony API menyediakan sekumpulan api untuk memanfaatkan devices-devices telephony, sehingga akan cocok untuk aplikasi-apliaksi cti (computer telephony intergration) yang dibutuhkan seperti acd (automatic call distribution), pc-pbx dan lainnya.
2.1.3. Variabel dalam Java Seperti halnya pada bahasa pemrograman pada umumnya, Java juga memungkinkan untuk mendeklarasikan variabel. Variabel merupakan satuan dasar penyimpanan dalam program Java. Suatu variabel didefinisikan dengan kombinasi identifier, tipe, dan cakupan. Pada dasarnya ada dua macam tipe variabel data bahasa Java, yakni tipe primitif dan tipe reference. 1. Tipe Data Primitif Delapan macam tipe data primitif dalam pemrograman Java, yaitu : a.
Integer ( Bilangan Bulat ) Integer merupakan tipe data numerik yang digunakan apabila tidak berurusan dengan pecahan atau bilangan desimal. Tipe data numerik yang termasuk integer adalah sebagai berikut :
10
Tabel 2.1 Tipe Data Integer
Bilangan integer biasanya menggunakan int, dan bukan byte, short maupun long. Bilangan integer juga mengenal nilai positif dan negatif ( signed number ). Tipe data byte dan short hanya digunakan pada aplikasi khusus yang memperhatikan penggunaan memori. Sedangkan long jarang digunakan karena jarang memerlukan bilangan sebesar kapasitas long.
b. Floating Point ( Bilangan Pecahan ) Floating Point digunakan untuk menangani bilangan desimal atau perhitungan yang lebih detail dibanding integer. Ada dua macam floating point, yaitu : Tabel 2.2 Tipe Data Floating point
Semua bilangan pecahan atau desimal dalam Java tanpa diakhiri huruf f akan dianggap sebagai double. Sedangkan bilangan yang ingin dikategorikan sebagai float harus diakhiri dengan huruf F. Misalnya : 4.22
11
F atau 2.314f. Sedangkan untuk bilangan double, bisa menambah dengan huruf D, karena secara default bilangan dengan koma atau pecahan atau desimal akan dianggap sebagai double.
c.
Char Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ). Char berbeda dengan String, karena String bukan merupakan tipe data primitif, melainkan sebuah objek. Tipe char mengikuti aturan unicode, sehingga dapat menggunakan kode \u kemudian diikuti bilangan dari 0 sampai 65535, tetapi yang biasa digunakan adalah bilangan heksadesimal dari 0000 sampai FFFF. Misalnya : ‘\u123’ Selain karakter biasa, juga terdapat karakter khusus yang didefinisikan dengan cara mengawalinya menggunakan tanda \ seperti pada tabel berikut : Tabel 2.3 Tipe Data Char, Karakter Khusus
d. Boolean Tipe data boolean terdiri dari dua nilai, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program.
12
2. Tipe Data Referensi Kelebihan pemrograman berorientasi objek adalah dapat mendefinisikan tipe data baru yang merupakan objek dari class tertentu. Tipe data ini digunakan untuk mereferensikan objek atau class tertentu, seperti String. Latihan 2. TipeData.java class TipeData { public static void main(String[] args) { long data1 = 546767226531; int data2 = 2235641; short data3 = 714; byte data4 = 34; float data6 = (float) 1.733; // tipe data pecahan double data5 = 4.967; // tipe data pecahan char data7 = 'C'; boolean data8 = true; System.out.println("Nilai Long : "+ data1); System.out.println("Nilai Int : "+ data2); System.out.println("Nilai Short : "+ data3); System.out.println("Nilai Byte : "+ data4); System.out.println("Nilai Double : "+ data5); System.out.println("Nilai Float : "+ data6); System.out.println("Nilai Char : "+ data7); System.out.println("Nilai Boolean : "+ data8); } }
2.1.3.1.Penamaan Variabel dan Scope Variabel Penamaan sebuah variabel dalam Java harus memenuhi aturan sebagai berikut:
Harus terdiri atas sederetan karakter unicode yang diawali oleh karakter huruf atau garis bawah.
Tidak boleh berupa keyword (kata yang dicadangkan), null, atau literal true/false.
Harus unik dalam suatu scope.
13
2.1.4. Operator dalam Java Operator Java adalah karakter khusus yang memerintahkan compiler untuk melakukan operasi terhadap sejumlah operand. Perintah operasi dispesifikasikan oleh operator, dimana operand-operand adalah variabel, pernyataan, atau besaran literal. Ada 4 jenis dasar operator: aritmatik, bitwise, relasi, dan logika.
2.1.4.1. Operator Aritmatik Operator ini digunakan untuk proses matematis, sama persis dengan yang digunakan pada aljabar, seperti:penambahan(+), pengurangan(-), perkalian(*), pembagian(/), dan sisa pembagian(%). Operand-nya harus berupa tipe numerik. Operator ini tidak dapat digunakan untuk tipe boolean, tetapi dapat digunakan untuk tipe char, karena char adalah himpunan int.
2.1.4.2. Operator Bitwise Tipe numerik integer, long, int, short, char, dan byte memiliki kumpulan operator tambahan yang dapat memodifikasi dan memeriksa bit-bit yang menyusun nilainya. Operator bitwise dalam Java digunakan untuk manipulasi bit. Operator bitwise dalam Java, antara lain : bitwise and(&), bitwise or(|), bitwise xor(^), bitwise complement.
2.1.4.3. Operator Relasi Untuk membandingkan 2 buah nilai, Java memiliki kumpulan operator relasi berikut ini untuk menyatakan kesamaan dan urutan. Semua tipe pada Java, mencakup integer, bilangan pecahan, karakter, boolean, dan referensi dapat dibandingkan menggunakan pengujian kesamaan(==), dan ketidaksamaan(!=). Hanya tipe numerik yang dapat dibandingkan dengan operator urutan (ordering). Operand integer, bilangan pecahan, dan karakter dapat dibandingakan untuk melihat mana yang lebih besar atau lebih kecil. Semua operator ini menghasilkan tipe boolean.
14
2.1.4.4. Operator Logika Semua operator ini mengkombinasikan dua besaran boolean untuk menghasilkan besaran boolean.
2.1.5. Control Flow dalam Java Control flow dalam Java meliputi operasi pengulangan dan operasi kondisional.
2.1.5.1. Operasi Pengulangan While Statement while digunakan untuk mengeksekusi sebuah blok secara berulang memenuhi kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut: while (ekspresi){ ............statement....... } Jadi selama ekspresi menghasilkan nilai true, statement yang ada akan dieksekusi secara terus-menerus.
Do-while Statement ini digunakan untuk mengeksekusi sebuah blok secara berulang sampai tidak memenuhi kondisi tertentu. Pada do-while, ekspresi tidak diperiksa pada saat awal eksekusi, jadi minimal blok statement do-while akan dieksekusi sekali. Sintaks penggunaannya adalah sebagai berikut : do { statement; } while (ekspresi);
15
For Statement for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuah range tertentu. Sintaks penggunaannya adalah sebagai berikut: for(inisialisasi;terminasi;increment) { statement;. } Inisialisasi dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasi digunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresi yang akan dieksekusi setiap selesai melakukan satu pengulangan.
2.1.5.2. Operasi Kondisional If-else Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut: if (kondisi) { statement; } Jika kondisi bernilai true, statement yang ada akan dieksekusi. Ada kalanya kita menginginkan dua percabangan, yakni jika suatu kondisi terpenuhi, lakukan aksi a, jika tidak lakukan aksi b. Maka sintaks penggunaannya adalah sebagai berikut: if (kondisi) { statement; } else{ statement; } Jika kondisi bernilai true, statement 1 akan dijalankan. Sebaliknya maka statement 2-lah yang akan dijalankan.
16
Switch-case Statement ini digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut: switch (ekspresi) { case (kondisi-1) statement-1; break; ........................................ case (kondisi-n): statement-n; break; default: statement-default; break; }
2.1.6.
Break, Label, Return, Continue Statement break ada 2 macam, yakni:
Break with label
Break without label Penggunaan break tanpa label umunya dalam switch(), dan dalam
pengulangan for(), do-while(), dan while(). Fungsi break adalah untuk menghentikan eksekusi sebuah blok program, misalnya untuk memaksa keluar dari sebuah looping. Penggunaan break dengan label adalah pada pengulangan yang berkalang, yakni pengulangan dalam pengulangan, yang mungkin berada dalam pengulangan yang lain, dan seterusnya, akan menyebabkan setelah eksekusi sebuah blok statement terhenti, aliran eksekusi akan berlanjut ke posisi pengulangan tempat label berbeda. Continue digunakan untuk melewatkan eksekusi pada pengulangan yang ada, dan melanjutkan ke pengulangan berikutnya. Pernyataan return digunakan untuk keluar dari sebuah fungsi, dan dapat diberikan parameter nilai untuk menunjukkan return value dari sebuah fungsi.
17
2.2.
Java 2 Standard Edition Aplikasi yang dibuat dan dikembangkan penulis dalam penulisan ini
menggunakan bahasa pemrograman berbasis Java 2 Standard Edition(lebih dikenal dengan J2SE). Pada bagian ini, penulis akan menjelaskan dasar-dasar J2SE, meliputi pengenalan J2SE dan komponen pada J2SE. Berikut adalah penjelasannya:
2.2.1. Gambaran J2SE J2SE atau Java 2 Standard Edition merupakan bahasa pemrograman java untuk aplikasi desktop yang merupakan object-oriented programming. Pada J2SE, terdiri dari dua buah produk yang dikeluarkan untuk membantu dalam membuat aplikasi tanpa tergantung dari platform yang digunakan, yaitu: 1.
Java SE Runtime Environment (JRE) Java Runtime Environment (JRE) menyediakan perpustakaan, Java Virtual Machine (JVM), dan komponen lain untuk menjalankan applet dan aplikasi yang ditulis dengan bahasa pemrograman java. Selain itu, terdapat dua buah kunci teknologi yang merupakan bagian dari JRE, yaitu: Java Plug-in, yang memungkinkan menjalankan applet di browser populer dan Java Web Start, yang menyebarkan aplikasi mandiri melalui jaringan. JRE tidak mengandung utilitas seperti compiler atau debugger untuk mengembangkan applet dan aplikasi.
2.
Java Development Kit (JDK) Java Development Kit (JDK) merupakan perangkat lunak yang digunakan untuk menajemen dan membangun berbagai aplikasi java. JDK merupakan superset dari JRE, berisikan segala sesuatu yang ada di JRE ditambahkan compiler dan debugger yang diperlukan untuk mengembangkan applet dan aplikasi.
18
Pada JDK, terdapat berbagai tools yang digunakan untuk membangun aplikasi java. Tools tersebut digambarkan dengan diagram berikut:
Gambar 2.2 Tools Dasar JDK
2.2.2. Java Class-Library Bahasa pemrograman java menyediakan library-library standar yang telah di-compile dan dapat langsung digunakan dalam implementasi pembuatan sebuah aplikasi. Pada library, terdapat berbagai macam class yang dapat digunakan dan telah dikelompokkan ke dalam package. Package yang tersedia dalam J2SE akan dijabarkan pada tabel berikut:
Tabel 2.4 Tabel Package pada J2SE Package
Nama Package
Language
java.lang
Utilities
java.util
I/O
java.io
Keterangan Class-class utama yang merupakan inti dari bahasa java Class-class yang mendukung utilitas struktur java Class yang mendukung berbagai macam tipe input dan output
19
Lanjutan Tabel 2.4 Tabel Package pada J2SE Class yang mendukung lokalisasi Text
java.text
penanganan teks, tanggal, bilangan, dan message Class untuk melakukan perhitungan
Math
java.math
aritmatik arbitrary-precesion, baik integer atau floating point
AWT
java.awt
Class untuk perancangan user-interface dan envent-handling. Class untuk membuat berbagai
Swing
javax.swing
komponen dalam java yang bertingkah laku sama dengan berbagai platform.
Javax
javax
Perluasan dari bahasa java
Applet
java.applet
Class untuk membuat applet
Beans
java.beans
Class untuk membuat java Beans
Reflection
java.lang.reflect
SQL
java.sql
RMI
java.rmi
Networking
java.net
Security
java.security
2.3.
Class untuk memperoleh informasi runtime Class untuk mendukung akses dan pengolahan data dalam database Class untuk mendukung distributed programming Class untuk medukung dalam membangun aplikasi jaringan Class untuk mendukung keamanan kriptografi
Swing Java Swing merupakan library java yang digunakan untuk menciptakan
Graphic User Interface (GUI) yang berbasis cross platform atau OS independent. User interface yang dibangun dengan java swing dapat dijalankan pada sistem
20
operasi apa saja yang mendukung java edngan tampilan yang relatif sama, bahkan dapat menyerupai user interface Windows XP, Mac OS atau Linux.
2.3.1. Sejarah Swing Internet Foundation Classes (IFC) merupakan library grafik untuk java yang dikeluarkan pertama kali oleh Netscape Comminication Corporation pada 16 Desember 1996. Pada 2 April 1997, Sun Microsystems dan Netscape Comminication Corporation menggabungkan IFC dengan teknologi lain untuk membangun Java Foundation Classes. Swing diperkenalkan sebagai mekanime yang dapat dilihat dan dirasakan tiap-tiap komponen dalam sebuah aplikasi tanpa membuat perubahan pada substansi dalam pengkodean dari aplikasi. Perkenalan tersebut didukung dengan pluggabke kook and feel yang membuat komponen swing dapat digunakan dalam berbagai platform. Pada dasarnya, swing merupakan library yang terpisah. Namun, sejak Java Standard Edition 1.2 dipublikasikan, swing sudah termasuk ke dalam bagian J2SE.
2.3.2. Arsitektur Swing Swing
merupakan
platform-independent,
Model
View
Controller
framework untuk java yang mengikuti model pemrograman tunggal. Arsitektur dari swing terdiri dari: 1.
Platform Independence Swing dapat digunakan diberbagai platform seperti Windows OS, Mac OS, dan Linux karena ekspresi java dan implementasinya hampir sama untuk berbagai platform.
2.
Extensible Swing merupakan arsitektur terpartisi, yang memungkinkan untuk penggunaan implementasi berbagai framework interface tertentu. Pengguna dapat menyediakan kustom implementasi sendiri dari komponen untuk menggantikan implementasi default. Secara umum, pengguna Swing dapat menambahkan framework dengan memperluas framework yang sudah ada
21
dan/atau menyediakan implementasi alternatif komponen inti. Swing juga merupakan framework berbasis komponen, dimana komponen Swing adalah komponen Java Beans yang kompatibel dengan spesifikasi Java Beans Component Architecture. 3.
Customizable Atas dasar model program rendering dari framework Swing, kendali atas rincian rendering komponen dimungkinkan dalam Swing. Representasi visual dari komponen Swing pada umumnya berupa satu set standar elemen. Pengguna program biasanya menyesuaikan komponen Swing standar dengan menetapkan beberapa elemen untuk membuat visualisasi kontrol GUI yang unik.
4.
Configurable Swing bergantung pada mekanisme runtime dan pola komposisi tidak langsung untuk merespon perubahan pengaturan secara run-time. Contohnya aplikasi berbasis Swing dapat mengubah tampilan pada saat run-time, dimana pengguna dapat memberikan tampilan mereka sendiri dan diimplementasikan tanpa perubahan apapun pada kode program.
5.
Loosely-Coupled and MVC Pustaka Swing memanfaatkan pola model/view/controller(mvc) desain perangkat lunak yang secara konseptual pasangan data yang dilihat dari kontrol interface pengguna melalui yang dilihat. Karena hal tersebut, komponen Swing dikaitkan model dan programmer dapat menggunakan berbagai macam implementasi atau menyediakan sendiri implementasi tersebut. Penggunaan framework Swing tidak memerlukan penciptaan model, karena telah tersedia satu set implementasi yang transparan secara default, yang terkait dengan kelas Jcomponent di perpustakaan Swing. Komponen yang kompleks mungkin memerlukan implementasi model disekitar data spesifik aplikasi seperti: tabel dan pohon.
22
2.3.3. Komponen Dasar Swing Secara umum, komponen swing terdiri dari lima bagian yang sering digunakan, yaitu: 1.
Top-level Container Merupakan container dasar dimana komponen lainnya diletakkan. Toplevel Container ini terdiri dari Frame, Dialog, dan Applet yang diimplementasikan dalam class JFrame, JDialog, dan JApplet.
2.
Intermediate Container Merupakan komponen perantara untuk peletakkan komponen lainnya, yaitu class JPanel.
3.
Atomic Container Merupakan komponen yang memiliki fungsi spesifik dan biasanya user berinteraksi langsung dengan jenis komponen ini. Komponen ini terdiri dari: JButton, JTextField, dan JTextArea.
4.
Layout Manager Layout Manager berfungsi untuk mengatur posisi dari komponen yang diletakkan pada container. Terdapat lima macam layout, yaitu: class BorderLayout, Boxlayout, FlowLayout, GridBagLayout, dan GridLayout.
5.
Event Handling Event Handling berfungsi untuk menangani event yang dilakukan user, misalnya menekan tombol, mengklik mouse, dan lain sebagainya.
2.4.
AWT AWT atau Abstract Window Toolkit adalah salah satu platform-
independent java untuk windowing, graphics, dan user-interface widget toolkit. Saat ini, AWT sudah termasuk ke dalam bagian dari Java Foundation Classes (JFC), yaitu standar API untuk pemrograman java berbasis GUI. AWT merupakan GUI toolkit untuk beberapa profil Java ME, seperti konfigurasi alat yang terhubung meliputi java runtimes pada mobile telephone untuk mendukung AWT.
23
2.4.1. Sejarah AWT Ketika Java pertama kali dirilis oleh Sun Microsystems pada tahun 1995, komponen AWT memberikan tingkat abstraksi yang tipis yang mendasari interface pengguna. Contohnya, menciptakan checkbox AWT akan menyebabkan pemanggilan langsung subroutine yang mendasari pembuatan checkbox. Program GUI yang ditulis dengan menggunakan AWT tampak seperti aplikasi asli ketika dijalankan pada sistem operasi yang menjalankan aplikasi tersebut. Dalam J2SE 1.2, komponen AWT sebagian besar digantikan dari toolkit Swing. Selain menyediakan satu set komponen UI, Swing menarik komponen sendiri(dengan menggunakan Java 2D untuk memanggil ke subroutine tingkat rendah dalam subsistem grafis lokal) bukan mengandalkan modul pengguna tingkat tinggi interface sistem operasi. Swing menyediakan pilihan baik menggunakan sistem “tampilan dan nuansa” menggunakan platform asli tampilan dan nuansa atau platform-silang yang terlihat pada semua platform. Namun, Swing bergantung pada AWT untuk tampilan interface untuk sistem windowing asli.
2.4.2. Arsitektur AWT AWT menyediakan dua tingkat API, yaitu: 1. Interface umum antara Java dengan sistem asli, digunakan untuk windowing, manajer layout. API ini merupakan inti dari pemrograman Java GUI dan juga digunakan oleh Swing dan Java 2D yang berisi a. Interface antara sistem windowing asli dan aplikasi Java. b. Inti dari event subsistem GUI. c. Beberapa manajer layout. d. Interface untuk perangkat input seperti mouse dan keyboard. e. Paket java.awt.datatransfer untuk digunakan dengan clipboard dan Drag and Drop.
24
2. Satu set dasar komponen GUI seperti button, textbox, dan menu yang juga menyediakan interface dasar AWT, yang memungkinkan librari render dikompilasi ke kode asli untuk langsung menarik ke AWT canvas permukaan objek gambar. AWT juga membuat beberapa fungsionalitas tinggti yang tersedia untuk aplikasi, seperti: a. Akses ke sistem tray pada sistem pendukung b. Kemampuan untuk meluncurkan beberapa aplikasi dekstop seperti browser web dan klien email dari aplikasi Baik AWT ataupun Swing secara inheren aman, karena kode yang meng-update GUI harus dijalankan pada thread event pengirim. Kegagalan untuk melakukan hal ini dapat menyebabkan kondisi kebuntuan atau ras. Untuk mengatasi masalah ini, kelas utilitas bernama SwingWorker memungkinkan aplikasi untuk melakukan tugas-tugas yang memakan waktu mengikuti acara-interaksi pengguna di thread acara pengirim.
2.5
NetBeans IDE 6.8 Penulis menggunakan Text Editor NetBeans IDE 6.8 untuk membuat kode
sumber.
2.5.1 Langkah Awal Menjalankan Program NetBeans 6.8 : 1. Klik tombol start pada bagian Taskbar 2. Pilih menu Programs dan pilih Netbeans, kemudian klik Netbeans. 3. Setelah itu kita pilih New Project seperti gambar dibawah ini :
25
Gambar 2.3 New Project NetBeans
4. Kemudian kita pilih Java pada Categories dan pilih Java Application pada Projects. Lalu klik Next. 5. Kemudian akan muncul tampilan sebagai berikut.
Gambar 2.4 New Java Application 6. Kemudian isi project name dengan nama file yang diinginkan. Kemudian klik Finish. 7. Untuk membuat form pada netbeans kita klik kanan pada Source Packages, pilih New Jframe Form. Akan tampil gambar dibawah ini.
26
Gambar 2.5 New Jframe Form
8. Kemudian kita isi Class name-nya lalu kita klik Finish. 9. Setelah kita klik Finish akan muncul tampilan seperti dibawah ini. Selanjutnya silahkan membuat Aplikasi yang anda inginkan. MenuBar
Toolbar
Form Designer
Main Window
Komponen Pallete
Properties
Gambar 2.6 Layar Project NetBeans IDE 6.8
IDE merupakan sebuah lingkungan dimana semua tombol perintah yang diperlukan untuk mendesign aplikasi, menjalankan dan menguji sebuah aplikasi disajikan dengan baik untuk memudahkan pengembangan program.
27
2.5.2 Komponen NetBeans 6.8 a.
Main Windows Jendela utama ini bagian dari IDE yang mempunyai fungsi yang sama dengan semua fungsi utama dari program aplikasi Windows lainnya. Jendela utama Netbeans terbagi menjadi tiga bagian, berupa Main Menu, Toolbar dan Component Pallete.
b.
Toolbar Netbeans memiliki beberapa toolbar yang masing-masing memiliki perbedaan fungsi dan setiap tombol pada bagian toolbar berfungsi sebagai pengganti suatu menu perintah yang sering digunakan. Toolbar sering disebut juga dengan Speedbar. Toolbar terletak pada bagian bawah baris menu. Pada kondisi default Netbeans memiliki beberapa bagian toolbar, antara lain : Build Main Project, Clean and Build Main Project, Run Main Project, Debug Main Project, dan Profile Main Project.
c.
Component Palette Component Pallete berisi kumpulan ikon yang melambangkan komponen-komponen yang terdapat pada VCL (Visual Component Library), pada Component Pallete akan ditemukan beberapa page control, seperti Swing Containers, Swing Controls, Swing Menus, Swing Windows, AWT, Beans, dan Java Persistence.
Page Control
Icon Button
Gambar 2.7 Component Palette
28
d.
From Designer Form Designer merupakan suatu objek yang dapat dipakai sebagai tempat
untuk merancang program aplikasi. Form berbentuk sebuah meja kerja yang dapat diisi dengan komponen-komponen yang diambil dari Component Pallete.
Gambar 2.8 Form Kerja NetBeans
e.
Source Editor Source Editor merupakan tempat untuk menuliskan kode program. Pada bagian ini dapat dituliskan pernyataan-pernyataan dalam Object Java. Keuntungan bagi pemakai Netbeans adalah bahwa tidak perlu menuliskan kode-kode sumber, karena Netbeans telah menyediakan kerangka penulisan sebuah program seperti yang tampak pada Gambar 2.8
Gambar 2.9 Source Editor
29
f. Object Inspektor Object Inspector digunakan untuk mengubah properti atau karakteristik dari sebuah komponen. Object Inspector terdiri dari dua tab, yaitu Properties dan Events seperti yang tampak pada Gambar 2.10.
Gambar 2.10 Inspector
2.6
Registry
Registry, dalam platform sistem operasi Microsoft Windows 32-bit, merupakan sebuah basis data yang disusun secara hierarkis yang mengandung informasi mengenai konfigurasi sebuah sistem, mulai dari konfigurasi perangkat keras, perangkat lunak, asosiasi ekstensi berkas dengan aplikasinya hingga preferensi pengguna. Registry merupakan pengganti berkas-berkas konfigurasi *.INI yang digunakan dalam sistem Windows 16-bit (Windows 3.x dan Windows for Workgroups). Registry, pertama kali diperkenalkan di dalam sistem Windows 16-bit sebagai penampung informasi mengenai pemetaan/asosiasi ekstensi berkas dengan aplikasinya, dan kemudian dikembangkan menjadi basis data dengan cakupan yang luas pada sistem-sistem operasi keluarga Windows NT. Registry juga kemudian digunakan pada sistem operasi kelas rumahan: Windows 95, Windows 98 dan Windows ME, tapi memang implementasi yang cukup bagus dari registry terdapat di dalam keluarga sistem operasi Windows NT.
30
2.6.1 Struktur Registry Struktur registry agak mirip dengan struktur direktori dalam sistem berkas. Selain itu, registry juga dapat diakses dengan menggunakan sintaksis yang sama dengan cara mengakses berkas, dengan menggunakan karakter garis miring terbalik (backslash) untuk menandakan tingkatan hierarkis. Susunannya adalah seperti <subtree>\
\<subkey...>.
Setiap key dan subkey tersebut
dapat
memiliki nilai yang dapat ditentukan atau nilai default, yang disebut sebagai Value. Akan tetapi, cara mengakses value tidaklah sama dengan cara mengakses berkas dalam sistem berkas, mengingat nama value dapat mengandung karakterbackslash yang dapat menjadi ambigu ketika menggunakan cara baca seperti halnya mengakses sistem berkas. Registry Windows terdiri atas beberapa anak pohon berikut, yang disusun secara hierarkis dengan My Computer sebagai root directory-nya:
HKEY_LOCAL_MACHINE, sering disebut sebagai HKLM, merupakan sebuah tempat penyimpanan untuk konfigurasi sistem yang bersangkutan, yang terdiri atas perangkat keras dan perangkat lunak. Semua yang terdapat di dalam anak pohon ini diaplikasikan kepada semua pengguna.
HKEY_CURRENT_USER, sering disebut sebagai HKCU, merupakan sebuah tempat penyimpanan untuk konfigurasi yang dimiliki oleh pengguna yang sedang melakukan logon, yang menyimpan informasi mengenai konfigurasi preferensi pengguna (konfigurasi desktop, warna, dan konfigurasi lainnya yang setiap pengguna dapat melakukan kustomisasi terhadapnya).
HKEY_USERS,
sering
disebut
sebagai HKU,
merupakan
tempat
penyimpanan untuk konfigurasi setiap pengguna yang terdaftar di dalam komputer yang bersangkutan. Setiap anak kunci dari anak pohon ini diidentifikasikan dengan menggunakan nomor Security Identifier(SID) yang dimiliki oleh pengguna. Ketika pengguna melakukan logon, SID yang cocok akan dimuat ke dalam anak pohonHKEY_CURRENT_USER.
HKEY_CLASSES_ROOT, sering disebut sebagai HKCR, merupakan tempat penyimpanan untuk konfigurasi asosiasi/pemetaan ekstensi sebuah berkas atau objek Object Linking and Embedding (OLE) dengan aplikasi yang
31
dapat menanganinya. Sebagai contoh, berkas berekstensi .txt akan ditangani oleh aplikasi editor teks seperti Notepad dan masih banyak lainnya.
HKEY_CURRENT_CONFIG, sering disebut sebagai HKCC, merupakan tempat penyimpanan untuk konfigurasi perangkat keras dan sistem operasi yang sedang digunakan saat itu, yang diperoleh pada saat proses booting dilakukan. Informasi yang disimpan di sini bersifat volatil dan tidak disimpan secara permanen ke dalam berkas penampung registry, tapi akan selalu dibuat setiap kali proses bootingdilakukan.
HKEY_DYN_DATA, yang hanya terdapat di dalam Windows 95, Windows 98, dan Windows Millennium Edition, merupakan tempat penyimpanan konfigurasi dinamis untuk semua perangkat keras plug-andplay. Tidak ada padanannya dalam Windows NT, tapi dalam Windows NT 5.x, terdapat sebuah anak pohon HKEY_PERFORMANCE_DATA, yang hanya digunakan untuk mengumpulkan informasi performance counter Windows 2000, mengingat semua konfigurasi perangkat keras disimpan di dalamHKEY_LOCAL_MACHINE\HARDWARE\.
2.6.1.1. HKEY_LOCAL_MACHINE Menyimpan
informasi/data
mengenai
semua
konfigurasi
mesin
yang
bersangkutan. HKLM bukanlah symbolic link ke kunci registry manapun. HKEY_LOCAL_MACHINE memiliki beberapa anak kunci, yakni:
HKEY_LOCAL_MACHINE\SOFTWARE, berguna untuk menyimpan semua konfigurasi perangkat lunak yang terinstal di dalam komputer yang bersangkutan, dan konfigurasinya yang akan diaplikasikan kepada semua pengguna, baik pengguna yang melakukan logon secara lokal/interaktif maupun yang melakukan logon secara remote (melalui service logon, batch logon, atau terminal services logon).
HKEY_LOCAL_MACHINE\SYSTEM, berguna untuk menyimpan semua informasi dan konfigurasi sistem operasi Windows yang sedang berjalan. Di sini terdapat semacam recovery point, yang disebut sebagai LastKnownGood Configuration, yang akan digunakan pada saat sistem mengalami masalah
32
pada
saat
proses booting.
Semua
konfigurasi driver dan layanan
Windows (Win32 Service dan komponen Windows seperti NTFS dan TCP/IP) disimpan di sini.
HKEY_LOCAL_MACHINE\SAM, berguna untuk menyimpan basis data akun pengguna yang terinstal di dalam sistem operasi yang bersangkutan. Secara default, SAM tidak dapat diakses, bahkan oleh administrator sekalipun, karena memang access control-nya tidak memungkinkan hal itu dilaksanakan. SAM adalah singkatan dari Security Accounts Manager.
HKEY_LOCAL_MACHINE\HARDWARE, berguna untuk menyimpan konfigurasi perangkat keras di dalam sistem yang bersangkutan, seperti halnya konfigurasi
sumber
daya perangkat
keras (interupsi
perangkat
keras,
konfigurasi DMA, dan konfigurasi lainnya).
HKEY_LOCAL_MACHINE\SECURITY, berguna untuk menyimpan konfigurasi keamanan Windows.
2.6.1.2. HKEY_CURRENT_USER Menyimpan informasi/data yang diasosiasikan dengan pengguna yang sedang masuk log. HKCU merupakan sebuah symbolic link ke kunci registry HKEY_USERS\<SID
dari
pengguna
yang
bersangkutan>.
HKCU
juga
menyimpan informasi mengenai profil pengguna, konfigurasi perangkat lunak, dan preferensi mereka. Terdapat beberapa anak kunci, yakni:
AppEvents, yang digunakan untuk menyimpan asosiasi antara suara dengan sebuah event. Disarankan untuk menggunakan Control Panel->Sound untuk mengubahnya, dan jangan menyunting secara langsung dari sini.
Console, yang digunakan untuk menyimpan konfigurasi jendela Command Prompt (cmd.exe); contoh: lebarnya, tingginya, dan warnanya. Disarankan untuk menggunakan Command Prompt->Properties untuk mengubahnya, dan jangan menyunting langsung dari sini.
Control Panel, digunakan untuk menyimpan konfigurasi screen saver, skema desktop, warna, keyboard, dan mouse. Selain itu juga dapat menyimpan informasi ketidakmampuan (accessibility) dan regional settings. Disarankan
33
untuk menggunakan Control Panel->Display, Control Panel->Accessibility, dan Control Panel->Language and Regional Options untuk mengubahnya, dan jangan menyuntingnya secara langsung dari sini.
Environment, mengandung definisi Environment Variable. Disarankan untuk
menggunakan
Control
Panel->System->Advanced->Environment
Variables untuk mengubahnya, dan jangan menyunting langsung dari sini.
Keyboard Layout, menyimpan konfigurasi lay-out konfigurasi keyboard (contoh U.S. English, atau U.K. English, atau U.S. Dvorak, dan lain sebagainya).
Network, menyimpan konfigurasi dan pemetaan drive yang berada di jaringan.
Printers, menyimpan konfigurasi koneksi printer.
Software, digunakan untuk menyimpan preferensi pengguna terhadap sebuah perangkat lunak tertentu.
UNICODE
Windows 3.1 Migration Status
2.6.1.3. HKEY_USERS Anak pohon HKEY_USERS mengandung beberapa anak yakni semua profil pengguna yang terdaftar di dalam sistem yang bersangkutan dan basis data registrasi objek OLE. Selain itu, anak pohon ini juga mengandung HKEY_USERS\.DEFAULT, yang dihubungkan dengan profil milik akun SYSTEM, yang merupakan profil yang digunakan oleh salah satu komponen Windows, WINLOGON.EXE, untuk menyimpan semua konfigurasi seperti halnya
HKEY_CURRENT_USER,
yakni
bagaimana
tampilan
desktop,
bagaimana konfigurasi perangkat keras dan lain-lain. Pengaturan yang diberlakukan terhadap HKU\.DEFAULT ini dapat menjadikan konfigurasi desktop dan lain-lain pada saat proses logon Windows akan berubah dari pengaturan default-nya.
34
Ketika seorang pengguna masuk log ke sebuah sistem untuk pertama kalinya, sementara akun miliknya tidak berupa roaming profile (yakni, sebuah profil pengguna yang disimpan di dalam tempat tersentralisasi di dalam domain controller), maka Windows akan membuatkan sebuah profil yang baru untuknya, yang dibuat berbasiskan pengaturan yang terdapat di dalam C:\Documents and Settings\Default User.
2.6.1.4. HKEY_CURRENT_CONFIG Anak pohon HKEY_CURRENT_CONFIG mengandung data konfigurasi untuk profil perangkat keras (hardware profile) yang sedang digunakan oleh Windows. HKCC tidak mengandung data apapun, karena memang anak pohon ini merupakan
sebuah
symbolic
link
terhadap
HKEY_LOCAL_MACHINE\
SYSTEM\CurrentControlSet\Hardware Profiles\Current. Dengan mengubah kunci tersebut atau mengubah HKCC, akan menghasilkan sesuatu yang sama. Penggunaan profil perangkat keras mengizinkan administrator untuk mengonfigurasikan beberapa variasi dari pengaturan driver perangkat keras yang digunakan pada saat melakukan booting. Meskipun profil yang digunakan dapat berubah dari satu proses booting ke proses booting lainnya, aplikasi dapat merujuk ke anak pohon ini untuk mencari profil mana yang sedang dimuat oleh Windows. Pengaturan profil perangkat keras dapat dilakukan dengan Control Panel->System->Hardware->Hardware Profiles. Jika ada lebih dari satu profil perangkat keras, maka komponen Windows, yakni NTLDR, akan menanyakan kepada pengguna mengenai profil yang harus dimuat pada saat proses booting dilakukan.
2.6.1.5 HKEY_CLASSES_ROOT Anak pohon HKEY_CLASSES_ROOT mengandung dua jenis data, yakni:
Data yang mengasosiasikan jenis berkas (dilihat dari ekstensinya atau kelasnya) dengan program yang dapat membukannya. Subkunci jenis berkas di dalam HKEY_CLASSES_ROOT memiliki nama yang sama dengan
35
ekstensi nama berkas, seperti halnya .txt, .exe, dan lain-lain. Asosiasi jenis berkas ini disimpan di dalam registry, tapi disarankan untuk menggunakan Folder Options->File Types jika memang hendak mengubahnya.
Data konfigurasi untuk objek-objek Object Linking and Embedding (OLE)/Component Object Model (COM). Isi
dari
HKCR
diambil
dari
dua
sumber,
yakni
HKLM\SOFTWARE\Classes dan HKCU\SOFTWARE\Classes. Jika sebuah subkey atau entri terdapat di dalam salah satu dari dua lokasi tersebut, maka hal tersebut akan ditampilkan juga di dalam HKCR. Jika ada dua entri yang konflik di antara dua lokasi tersebut, hanya HKCU\SOFTWARE\Classes yang akan ditampilkan di dalam HKCR.
2.6.2 Jenis Data Registry Sebuah value dapat memiliki jenis-jenis data seperti di bawah ini:
REG_NONE, yang merupakan sebuah jenis data registry yang tidak didefinisikan sebelumnya. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x00.
REG_SZ, merupakan jenis data teks (string) dengan panjang yang tetap (fixed-length string). Semua sistem operasi 32-bit Windows (Windows NT dan Windows 9x) mendukung jenis data registry ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x01.
REG_EXPAND_SZ, merupakan jenis data teks/string yang dapat diekspansi. Windows 9x tidak memiliki jenis data ini. Diperlukan editorregistry khusus (regedt32.exe) untuk menangani jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x02.
REG_BINARY, merupakan jenis data biner, yang dapat berarti macammacam (bisa berupa teks/string, atau bilangan). Semua sistem operasi 32-bit Windows (Windows NT dan Windows 9x) mendukung jenis data registry ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x03.
REG_DWORD, merupakan jenis data angka 32-bit. Semua sistem operasi 32-bit Windows (Windows NT dan Windows 9x) mendukung jenis data
36
registry ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x04. Terdapat dua jenis implementasi dari jenis data ini, yakni:
REG_DWORD_LITTLE_ENDIAN,
yang
merupakan
jenis
data
REG_DWORD default dalam Windows NT yang dijalankan di atas prosesor Intel x86/x64. Jenis data ini berukuran 32-bit yang disusun dengan menggunakan format little-endian. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x05.
REG_DWORD_BIG_ENDIAN,
yang
merupakan
jenis
data
REG_DWORD yang berukuran 32-bit yang disusun dengan menggunakan format big-endian. Jenis data ini hanya dapat didukung oleh Windows NT yang dijalankan di atas mesin DEC Alpha, MIPS, atau IBM PowerPC, yang memang menggunakan format bilangan big-endian. Windows NT 5.x yang hanya dapat berjalan di atas sistem x86 tidak menangani jenis data ini (terdapat limitasi pada mikroprosesor), meskipun Windows NT 5.x mendukungnya. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x06.
REG_MULTI_SZ, merupakan jenis data teks/string yang memiliki banyak baris yang dipisahkan dengan dua buah karakter null (0x00). Windows 9x tidak memiliki jenis data ini.Diperlukan editor registry khusus (regedt32.exe) untuk menangani jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x07.
REG_LINK, yang merupakan symbolic link ke sebuah objek Windows NT dalam ruang nama/namespace objek Windows NT (yang diatur oleh Object Manager Windows NT). Registry Editor default bawaan Windows (regedit.exe, regedt32.exe, dan utilitas command-linereg.exe) tidak dapat menyunting jenis ini. Jenis data ini digunakan secara internal oleh Windows NT saja, dan tidak digunakan oleh aplikasi. Registry dalam Windows 9x tidak memiliki jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x08.
37
REG_RESOURCE_LIST (WindowsNT) atau REG_FULL_RESOURCE_DESCRIPTOR, yang merupakan jenis data registry yang hanya digunakan untuk menyimpan konfigurasi perangkat keras dan driver-nya yang terinstalasi di atas sistem operasi Windows NT. Registry dalam Windows 9x tidak memiliki jenis data ini. Jenis data ini adalah kumpulan larik (array) yang digunakan untuk menyimpan daftar sumber daya (interupsi perangkat keras, Direct Memory Access (DMA), I/O range dan memory range) yang digunakan oleh komponen perangkat keras atau driver.
Dibutuhkan
registry editor khusus
(regedt32.exe) untuk
menyunting value dengan jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x09.
REG_QWORD, merupakan jenis data angka yang memiliki panjang 64bit. Jenis data ini hanya terdapat di dalam sistem prosesor 64-bit saja, semacam DEC Alpha, IA-64, atau x64. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x12. Sama seperti halnya REG_DWORD, REG_QWORD juga terdapat dua jenis implementasi, yakni little-endian (REG_QWORD_LITTLE_ENDIAN, dengan identifier 0x13) dan big-endian (REG_QWORD_BIG_ENDIAN, dengan identifier 0x14),
meskipun
secara default format
REG_QWORD_LITTLE_ENDIAN.
yang
Diperlukan
digunakan editor
khusus
adalah untuk
menyunting jenis data ini.
2.6.3 Registry Editor Windows Dalam Windows 16-bit, terdapat sebuah komponen editor registry, yang disebut sebagai "Registration Info Editor" atau "Registration Editor". Seperti yang telah dibahas sebelumnya, bahwa registry dalam Windows 16-bit hanya terdapat asosiasi berkas atau objek OLE dengan aplikasinya saja, maka editor registry dalam sistem ini pun hanya dapat menyunting hal tersebut saja. Windows NT yang dirilis kemudian memperkenalkan banyak konsep baru terhadap registry Windows, seperti halnya mampu menangani beberapa sub-tree, dan juga atribut keamanan dengan access control list. Dalam Windows NT 3.1,
38
terdapat satu editor registry, yang disebut dengan regedt32.exe, yang lebih bagus dan mampu menyunting beberapa jenis tipe data. Windows 95 juga memperkenalkan editor registry baru, yang dibuat berbasiskan registry editor bawaan Windows NT, tetapi lebih sederhana (tidak ada atribut keamanan, dan tidak ada proteksi read-only). Registry Editor dalam Windows 95/98/ME ini disebut sebagai Regedit.exe saja. Saat Microsoft merilis Windows NT 4.0, setelah Windows 95, di sistem operasi
tersebut
regedt32.exe.
terdapat
dua
editor registry,
Regedit.exe merupakan
bawaan
yakni Windows
regedit.exe 95,
dan
sementara
regedt32.exe merupakan bawaan Windows NT, yang diperbarui. Ada beberapa perbedaan di antara keduanya, yakni sebagai berikut:
Regedit.exe, ditampilkan seperti halnya Windows Explorer, dengan rootdirectory dengan nama My Computer dan akan menampilkan semua sub-tree yang dimuat di bawahnya. Regedit.exe hanya menampilkan satu window saja. Sementara itu, registry dalam regedt32.exe ditampilkan seperti halnya Program Manager, dengan setiap sub-tree ditampilkan dalam setiap windownya masing-masing, sehingga sebuah window hanya mengandung sub-tree saja.
Regedit.exe merepresentasikan komponen sebuah value (nama, jenis dan datanya) sebagai tiga kolom yang terpisah dari sebuah tabel. Sementara, regedt32.exe akan merepresentasikan komponen sebuah value sebagai daftar string.
Regedit.exe mendukung klik-kanan terhadap sebuah entri dalam struktur tampilan pohon untuk mengatur propertinya dan beberapa pengaturan lainnya. Sementara, regedt32.exe mengharuskan semuanya dilakukan dari menu utama aplikasi.
Karena regedit.exe adalah program bawaan Windows 95, program tersebut tidak dapat menyunting izin akses (karena memang izin akses tidak terdapat dalam Windows 9x dan hanya terdapat di dalam keluarga sistem operasi Windows NT). Oleh karena itu, satu-satunya cara untuk mengakses registry
39
dalam Windows NT secara penuh adalah dengan menggunakan program regedt32.exe.
Regedit.exe hanya mendukung beberapa jenis data saja (REG_SZ, REG_DWORD/REG_DWORD_LITTLE_ENDIAN, dan REG_BINARY). Sementara itu, Regedt32.exe mendukung banyak jenis data, yakni REG_SZ, REG_DWORD,
REG_MULTI_SZ,
REG_EXPAND_SZ,
dan
REG_RESOURCE_LIST. Menyunting jenis data yang tidak didukung dengan Regedit.exe dalam Windows NT 4.0 dan Windows 2000 akan menyebabkan konversi data ke jenis data yang didukung oleh aplikasi tersebut dan tidak dapat dikembalikan ke jenis data sebelumnya. Hal tersebut terus diberlakukan dalam Windows 2000. Dan, pada Windows XP dan Windows Server 2003, kemampuan kedua program tersebut digabungkan ke dalam satu program saja, regedit.exe. Regedt32.exe juga masih ada, tapi hanya berupa symbolic link saja. Jika menjalankan regedt32.exe dalam kedua sistem operasi tersebut, hal tersebut sama saja dengan menjalankan regedit.exe. Windows Vista pun demikian. Program editor registry bawaan Windows, baik itu menggunakan regedit.exe maupun regedt32.exe mampu melakukan pengeksporan registry ke dalam sebuah berkas dengan ekstensi .REG atau .KEY. Hasil pengeksporan tersebut sama saja dengan berkas teks untuk konfigurasi biasa, yakni .INI. Path registry lengkap disusun sebagai header, sementara itu, entri registry dan nilainya disusun di bawahnya. Selain tentunya dapat melakukan pengeksporan registry ke dalam sebuah berkas teks, program itu juga dapat melakukan pengimporan.
2.7
Storyboard Storyboard memiliki beberapa fungsi, diantaranya: menjadi panduan bagi
programmer dan graphic designer dalam merancang sebuah aplikasi, mengetahui elemen multimedia yang akan digunakan pada rancangan, menjaga konsistensi multimedia pada aplikasi, memungkinkan pengimplementasian rancangan pada platform yang berbeda karena storyboard bersifat platform independent, dan
40
memungkinkan klien dan tim memeriksa, menyetujui, dan meningkatkan rancangan. Storyboard memiliki beberapa elemen, yaitu: nama aplikasi(program) atau modul dan nomor halaman atau nomor layar, gambar sketsa layar atau halaman aplikasi beserta rincian objek-objek yang digunakan dan terdapat pada rancangan, meliputi: teks, gambar, animasi, video, audio, narasi, warna, penempatan objek, ukuran gambar, warna dan jenis huruf dari teks, interaksi, percabangan dan aksi lainnya.
3. PERANCANGAN DAN IMPLEMENTASI
3.1.
Perencanaan Aplikasi Dalam Penulisan ini, penulis berencana untuk membuat sebuah aplikasi
dekstop yang dapat mengakses suatu registry dan mengubah pengaturan tertentu dari registry pada komputer. Dengan menjalankan aplikasi tersebut, maka pengguna dapat dengan mudah mengubah pengaturan registry komputer dengan mudah karena pengguna pengaturan tersebut disusun secara list. Apabila pengguna ingin mengubah suatu pengaturan dalam registry, pengguna hanya cukup memilih list pengaturan yang sesuai dengan keinginan dan menekan tombol ok.
3.2.
Perancangan Aplikasi Pada tahap ini, penulis akan menjelaskan mengenai segala persiapan yang
dibutuhkan dalam pembuatan aplikasi ini. Adapun langkah – langkah pembuatan aplikasi ini akan dijelaskan secara detail pada subbab berikut.
3.2.1. Skema Rancangan Aplikasi Aplikasi ini dapat mengubah pengaturan registry windows dengan memanfaatkan perintah – perintah pengaturan yang telah di-list dengan sedemikian mudah untuk dapat digunakan. Skema dan rancangan ini dibuat dengan tujuan mempermudah dalam proses pembuatan aplikasi. Skema dan rancangan aplikasi dapat dilihat pada gambar 3.1. Registry Windows
List pengaturan registry Komputer Pengguna
Gambar 3.1 Skema Rancangan Aplikasi
41
42
Gambar tersebut menjelaskan bahwa pengguna yang ingin mengubah pengaturan registry komputer dapat langsung memilih pengaturan yang sesuai yang ada pada list pengaturan dalam aplikasi dengan syarat komputer tersebut telah mendukung aplikasi JAVA untuk mengeksekusi file jar.
3.2.2. Flowchart Flowchart merupakan tahapan perencanaan yang memuat tentang alur program yang diinginkan dalam aplikasi, berfungsi untuk mempermudah dalam pembuatan aplikasi. Pada aplikasi ini, terdapat kondisi untuk checkbox dimana checkbox hanya dapat dipilih satu untuk dieksekusi dengan button. Bentuk detail flowchart dapat dilihat pada gambar 3.2 dibawah ini.
43
Gambar 3.2 Flowchart
Gambar 3.2 menjelaskan alur program aplikasi yang dibuat. Pada saat aplikasi dijalankan, halaman yang pertama muncul adalah halaman menu list pengaturan registry yang dapat dipilih untuk mengubah pengaturan registry sesuai yang diinginkan. Ketika salah satu list dipilih dan pengguna menekan tombol ok, maka akan tampil kotak pesan yang memberikan penjelasan bahwa pengaturan registry yang dipilih telah berhasil diubah. Aplikasi berakhir ketika pengguna menutup aplikasi atau memilih menu exit pada tampilan menu list.
3.2.3. Storyboard Storyboard merupakan hal yang penting dalam pembuatan rancangan aplikasi karena memperlihatkan hubungan rantai kerja dari beberapa halaman atau form yang berbeda. Pada tahapan ini akan dibahas stroyboard program yang dilakukan user terhadap aplikasi yang sudah siap digunakan. Storyboard tersebut akan dijelaskan melalui gambar 3.3.
44
Gambar 3.3 Storyboard Aplikasi
Pertama kali user mengaktifkan aplikasi, akan ditampilkan sebuah jendela list checkbox yang dapat dipilih satu dari dua belas karena jika telah memilih satu checkbox, checkbox yang lain tidak dapat dipilih. Kedua belas checkbox tersebut terbagi menjadi dua bagian, yaitu: bagian “enabled” dan “disabled”. Ketika salah satu checkbox dipilih dan menekan tombok “OK”, akan ditampilkan sebuah jendela pesan yang memberitahukan bahwa nilai dari registry telah berhasil diubah sesuai dengan nama dari checkbox yang dipilih. Ketika jendela pesan tersebut di-close atau menekan “OK” pada jendela pesan, program kembali ke menu list checkbox. Pada menu bar Help apabila dipilih akan ada submenu yaitu “About..” yang apabila dipilih akan menampilkan jendela about dari aplikasi yang berisi keterangan dari nama aplikasi, deskripsi, vendor, versi, homepage, dan email. Pada menu bar File terdapat submenu “Exit” untuk menutup aplikasi atau dapat juga memilih icon X pada jendela.
3.2.4. Spesifikasi Perangkat Yang Digunakan Pada pembuatan aplikasi ini, penulis menggunakan spesifikasi perangkat keras(hardware) sebagai berikut : 1.
Proccessor Intel(R) Pentium D CPU 3.00GHz.
2.
Memory sebesar 1 GB RAM..
3.
Harddisk 160 GB.
45
4.
VGA Card NVIDIA GeForce 7300 GT 512 MB.
5.
Monitor Plug and Play
6.
Keyboard Standard PS/2 Keyboard
7.
Mouse PS/2
Sedangkan untuk spesifikasi perangkat lunak(software) yang digunakan sebagai berikut : 1.
Microsoft Windows Vista Ultimate Service Pack 1. Microsoft Windows Vista Ultimate disini merupakan sistem operasi yang digunakan dalam pembuatan aplikasi ini.
2.
JDK 1.6.0_18 for Windows i586. Penulis menggunakan java versi 1.6 dalam pembuatan aplikasi sebagai pustaka JAVA utama.
3.
JRE 1.6.0_18 for Windows i586. Penulis menggunakan java environment versi 1.6 dalam pembuatan aplikasi sebagai pendukung JDK 1.6.
4.
NetBeans IDE 6.8. Penulis menggunakan NetBeans versi 6.8 sebagai editor sekaligus compiler dan builder dalam pembuatan aplikasi.
3.3.
Perancangan Tampilan Pada tahap ini, penulis akan menjelaskan mengenai rancangan tampilan
pada aplikasi ini yang terdiri dari: tampilan list menu pengaturan registry, dan tampilan about.
3.3.1. Perancangan Tampilan Menu Fungsi Registry Pada perancangan menu ini, penulis menggunakan beberapa komponen dari paket java yaitu paket swing. Komponen yang digunakan antara lain: jmenubar untuk menu bar File dan Help, jpanel berupa mainpanel untuk menu dan statuspanel, jlabel untuk keterangan fungsi menu, jcheckbox berupa pilihan fungsi registry yg dapat dipilih, jbutton berupa tombol untuk eksekusi.
46
Gambar 3.4 Rancangan Tampilan Menu Fungsi Registry
Tampilan ini dirancang sebagai menu fungsi registry dimana judul dari tampilan ini adalah nama dari aplikasi yaitu Care Registry. Terdapat 2 buah menu bar yang terdiri dari: File yang memiliki submenu exit untuk menutup aplikasi dan Help yang memiliki submenu about untuk menampilkan tampilan about. Tampilan terbagi menjadi 2, terdiri dari: bagian kiri dengan label1 bertuliskan “Enable” sebagai keterangan dari checkbox untuk mengaktifkan beberapa fungsi, sedangkan bagian kanan dengan label2 bertuliskan “Disable” sebagai keterangan dari checkbox untuk menonaktifkan beberapa fungsi. Fungsi tersebut dituliskan sebagai label dari checkbox antara lain: Registry Tools untuk checkbox1 dan checkbox6, Task Manager untuk checkbox2 dan checkbox7, Hidden untuk checkbox3 dan checkbox8, Super Hidden untuk checkbox4 dan checkbox9, File Extension untuk checkbox5 dan checkbox10, Folder Option untuk checkbox11 dan checkbox12. Button digunakan untuk mengeksekusi perintah yang ada pada checkbox yang telah dipilih.
3.3.2. Perancangan Tampilan Help Pada perancangan tampilan ini, digunakan komponen swing dari paket java berupa jlabel untuk memberikan suatu keterangan, jbutton berupa tombol untuk menutup tampilan, dan imagelabel berupa gambar yang ingin ditampilkan.
47
Gambar 3.5 Rancangan Tampilan Help
Tampilan ini menampilkan keterangan tentang aplikasi, fungsi didalamnya dan cara menggunakan aplikasi yang merupakan teks dari label-label tersebut. Label1 bertuliskan “Help : Care Registry“, label2 bertuliskan “Aplikasi ini berfungsi untuk menon-aktifkan / mengaktifkan fungsi dari sistem”, label3 bertuliskan “Windows komputer anda. Diantaranya: “,label4 bertuliskan “Task Manager :: Mengakses taskmgr.exe “,label 5 bertuliskan “Regedit :: Mengakses ke regedit.exe / regedit32.exe “,label 6 bertuliskan “Folder Option :: menampilkan menu folder option “,label7 bertuliskan “ExtFile :: menampilkan ekstensi file “,label8 bertuliskan “Hidden :: Menampilkan File tersembunyi “,label9 bertuliskan Super Hidden :: Menampilkan File Sistem tersembunyi “,label10 bertuliskan “========================================== “,label11 bertuliskan
“==============================================
“,label12 bertuliskan “ “,label13 bertuliskan “Cara Menggunakan Aplikasi ini “,label14 bertuliskan “1. Pilih Checkbox yang diinginkan(hanya bisa 1)“,label15 bertuliskan “2. Ketika 1 checkbox dipilih, checkbox lain menjadi tidak dapat dipilih dan tombol “,label16 bertuliskan “Ok akan aktif, Klik tombol OK untuk mengeksekusi checkbox yang dipilih “,label17 bertuliskan “3. Akan muncul kotak pesan nilai registry berhasil diubah “,dan button bertuliskan “Close”.
48
3.3.3. Perancangan Tampilan About Pada perancangan tampilan ini, digunakan komponen swing dari paket java berupa jlabel untuk application name, description label, version label, vendor label, hompepage label, vendor, hompepage, version, label1, label2, label3, dan label4 yang memberikan suatu keterangan, jbutton berupa tombol untuk menutup tampilan, dan imagelabel berupa gambar yang ingin ditampilkan.
Gambar 3.6 Rancangan Tampilan About
Tampilan ini menampilkan keterangan dari aplikasi berupa nama aplikasi, deskripsi dari aplikasi, versi dari aplikasi, desainer aplikasi, vendor aplikasi, homepage aplikasi, email dari pembuat aplikasi. Nama aplikasi yaitu Care Registry, deskripsi aplikasi bertuliskan “A simple Java desktop application to change the value of Registry Editor.”, versi dari aplikasi 1.0, desainer aplikasi pada label4 bertuliskan ‘Hari “Rhy-Lone” Sulistio’, vendor aplikasi pada label vendor
bertuliskan
none,
label
homepage
bertuliskan
“http://rhy2lonely.wordpress.com/”, dan label2 bertuliskan email dari pembuat yaitu “[email protected]”, dan button bertuliskan “Close”.
3.4 .
Proses Instalasi Sebelum membuat aplikasi ini, penulis terlebih dahulu melakukan instalasi
beberapa software yang dibutuhkan dalam pembuatan aplikasi ini. Adapun software yang digunakan adalah JDK 6 update 18 untuk dan JRE 6 update 18 untuk Windows i586 serta NetBeans IDE 6.8 untuk Windows.
49
3.4.1. Instalasi JDK 6 JDK 6 merupakan paket yang berisi perintah-perintah standar dan classclass standar JAVA. Adapun langkah-langkah instalasinya adalah sebagai berikut: a) Klik dua kali pada paket JDK 6 yang telah di-download, tunggu beberapa saat hingga akan tampil halaman License Agreement seperti pada gambar 3.5 dibawah ini. Untuk melanjutkan ke halaman berikutnya klik Accept.
Gambar 3.7 Halaman License Agreement JDK 6 Update 18
b) Halaman selanjutnya adalah Custom Setup dapat dilihat pada gambar 3.6. Halaman ini berisikan optional feature
yang ingin disertakan dalam
proses instalasi. Klik Next untuk melajutkan ke halaman berikutnya
Gambar 3.8 Halaman Custom Setup c) Halaman berikutnya adalah Destination Folder untuk penginstalan JRE 6 yang otomatis akan diinstal ketika JDK 6 diinstal dengan catatan file JRE
50
6 juga telah di-download, klik Next untuk melanjutkan ke halaman berikutnya.
Gambar 3.9 Halaman Destination Folder JRE 6
d) Halaman berikutnya adalah halaman proses instalasi yang ditunjukkan gambar 3.8 yang akan menampilkan proses instalasi yang sedang dilakukan. Tunggu hingga proses instalasi selesai dan klik Finish untuk mengakhiri proses.
Gambar 3.10 Halaman Proses Instalasi JDK 6
3.4.2. Instalasi NetBeans IDE 6.8 NetBeans IDE 6.8 digunakan sebagai pustaka utama dan editor dalam pembuatan aplikasi ini, yang terdiri dari pustaka J2SE, J2ME, J2EE, dan bahasa
51
pemrograman lainnya seperti Python, Delphi, C/C++, dan lainnya. Berikut adalah cara instalasinya. a) Klik dua kali pada paket NetBeans IDE 6.8 yang telah di-download. Sehingga tampil halaman instalasi seperti pada gambar 3.9 dibawah ini. Klik Next untuk melanjutkan proses instalasi.
Gambar 3.11 Halaman Konfirmasi Instalasi NetBeans IDE 6.8
b) Muncul halaman License Agreement seperti pada gambar 3.10 di bawah ini. Klik checkbox lalu Next untuk melanjutkan ke halaman instalasi berikutnya.
Gambar 3.12 Halaman License Agreement NetBeans IDE 6.8
c) Setelah mengklik Next pada halaman License Agreement, maka tampil jendela halaman folder tujuan untuk penginstalan aplikasi dan
52
mendeteksi file JDK yang telah diinstal sebelumnya yang dapat dilihat pada gambar 3.11. Untuk ke halaman berikutnya klik Next.
Gambar 3.13 Halaman Folder Destination NetBeans IDE 6.8
d) Setelah memilih Next, akan tampil halaman Installation Folder untuk Sun Glassfish Enterprise Server v3 seperti pada gambar 3.12. Aplikasi ini adalah aplikasi runtimes untuk membangun web,dalam hal ini sebagai localhost. Klik Next untuk melanjutkan proses instalasi.
Gambar 3.14 Halaman Instalasi GlassFish v3
e) Selanjutnya halaman konfirmasi yang tampil setelah mengklik Next pada halaman sebelumnya. Halaman ini berisi informasi folder tujuan
53
instalasi NetBeans, GlassFish, dan total memori harddisk yang dibutuhkan. Halaman ini dapat dilihat pada gambar 3.13. Untuk mengakses halaman instalasi berikutnya, klik Next.
Gambar 3.15 Halaman Konfirmasi Instalasi NetBeans IDE 6.8 dan GlassFish v3
f) Halaman yang muncul selanjutnya adalah halaman proses instalasi aplikasi seperti gambar 3.14 di bawah ini. Semua fitur aplikasi yang telah dipilih akan diinstal, klik Next untuk melanjutkan proses ke halaman berikutnya jika proses instalasi telah selesai dilakukan.
Gambar 3.16 Halaman Proses Instalasi NetBeans IDE 6.8
g) Setelah proses instalasi selesai dilakukan dan mengklik Next , maka tampil halaman Setup Complete yang menandakan aplikasi NetBeans
54
telah berhasil diinstal. Terdapat dua buah checkbox, dimana yang pertama adalah checkbox untuk penggunaan aplikasi dan yang kedua adalah registrasi akun pada web Sun Microsystem.
Gambar 3.17 Halaman Setup Complete Instalasi NetBeans IDE 6.8
3.5.
Langkah Pembuatan Aplikasi Setelah selesai dengan proses instalasi aplikasi yang dibutuhkan, maka
tahap selanjutnya adalah proses pembuatan aplikasi. Dalam proses ini, ada beberapa yang harus diketahui diantaranya adalah, adanya file tambahan yang diperlukan untuk pembuatan aplikasi seperti file librari dan pustaka JAVA yang tidak termasuk pada saat instalasi JDK 6 dan NetBeans IDE 6.8, pembuatan halaman list fungsi registry, dan pembuatan halaman help. Berikut akan dijelaskan langkah untuk pembuatan aplikasi.
3.5.1. File Tambahan yang Diperlukan Dalam pembuatan aplikasi ini, terdapat dua buah file tambahan yaitu: jRegistryKey.dll yang merupakan file system yang mendukung aplikasi agar aplikasi dapat mengakses registry dan jRegistryKey.jar yang merupakan java library tambahan yang berisi fungsi – fungsi registry. File jRegistrykey.dll ditaruh di folder C:\Windows\System32 dan untuk file jRegistryKey.jar ditaruh pada folder lib project dengan cara meng-import file tersebut melalui properti project pada NetBeans IDE 6.8.
55
jRegistryKey.dll
Gambar 3.18 Tampilan jRegistryKey.dll Pada Folder System32
Klik kanan pada nama project
Pilih Properties
Gambar 3.19 Tampilan Membuka Properti Project
56
Pilih Add Jar/Folder Pilih libraries
Gambar 20 Tampilan Properti Project
Pilih jRegistryKey.jar
Gambar 3.21 Tampilan Browse jRegistryKey.jar
3.5.2. Pembuatan Class Utama Pada aplikasi ini, class utama adalah class yang
merupakan turunan
langsung dari class SingleFrameApplication, yang berisi method utama dari suatu aplikasi
Frame.
Method-method
tersebut
antata
lain:
startup(),
configureWindow(java.awt.Window root), CareRegapp getApplication(), dan main(String [] args). Method startup() digunakan untuk menampilkan halaman dari class CareRegView dengan membentuk objek class CareRegView yang merupakan halaman menu yang terdiri dari pilihan-pilihan fungsi registry dengan checkbox.
57
public class CareRegApp extends SingleFrameApplication { @overide protected void startup() { show(new CareRegView(this)); } … }
Potongan statement diatas adalah method startup() dari class CareRegApp dimana terdapat statement show(new CareRegView(this)); digunakan untuk menampilkan objek dari class CareRegView, dalam hal ini menampilkan halaman menu fungsi registry yang akan dibahas lebih lanjut pada sibbab 3.5.3. Method configureWindow(java.awt.Window root) tidak ada statement sehingga method ini memrupakan method tanpa fungsi namun termasuk method yang harus dituliskan dari class turunan SingleFrameApplication untuk mengatur window dari aplikasi. Method
CareRegApp
getApplication()
{
return
Application.getInstance(CareRegApp.class); } digunakan untuk mendapatkan instansi dari aplikasi dan mengembalikan nilai instansi tersebut pada class CareRegApp. Method main(String[] args) { launch(CareRegApp.class, args); } digunakan sebagai method utama untuk menjalankan aplikasi, dengan kata lain memanggil method CareRegApp.
3.5.3. Pembuatan Tampilan Menu Fungsi Registry Menu fungsi registry merupakan tampilan yang akan muncul ketika mengakses aplikasi ini. Pada halaman ini, menggunakan komponen class swing ,yaitu:
JButton,
JCheckBox,
JFrame,
JLabel,
JSeparator,
JPanel,
JMenuBar,JProgressBar, Icon, JDialog, Timet, JOptionPane dengan alamat javax.swing. class awt yang digunakan antara lain: ActionEvent dan ActionListener dengan alamat java.awt.event. class jdesktop antara lain: Action, ResourceMap, SingleFrameApplication, FrameView, dan TaskMonitor dengan alamat org.jdesktop.application. Sedangkan komponen class win32.registry yang
58
digunakan, yaitu: RegistryKey, RegistryValue, RootKey, ValueType, dan Win32Exception
dengan
alamat
ca.beq.util.win32.registry.
Secara
umum
statement yang digunakan untuk import class dari suatu alamat adalah import [alamat]. [namaClass];, sedangkan jika ingin menggunakan seluruh class pada alamat tersebut, [namaClass] dapat diganti dengan “*”. Tampilan ini menampilkan menu fungsi regitry berupa pilihan checkbox yang
dibuat
pada
class
CareRegView.
Untuk
mempermudah
proses
pemrograman, class CareRegView dibuat menjadi class turunan dari FrameView. Perhatikan potongan source code berikut, public class CareRegView extends FrameView {…}
Pengertian dari statement diatas adalah membuat class CareRegView dimana merupakan class turunan dari class FrameView. Pada tampilan ini, ditambahkan komponen seperti checkbox, label, dan, button dimana checkbox yang digunakan sebanyak 12, 2 buah label, dan 1 buah button. Langkah
selanjutnya
adalah
menambahkan
reaksi
pada
setiap
aksi/kegiatan pada checkbox dan button, dimana setiap reaksi yang dilakukan button akan mengacu pada checkbox yang dipilih. Untuk itu, pada button “OK” ditambahkan
reaksi
yang
ditulis
pada
method
jButton1ActionPerformed(java.awt.event.ActionEvent evt) yang akan bereaksi jika salah satu checkbox di pilih dengan fungsi .isSelected. Jika checkbox1 dipilih maka akan menjalankan perintah untuk men-enable registry tools. Jika checkbox2 dipilih maka akan menjalankan perintah untuk men-enable task manager. Jika checkbox3 dipilih maka akan menjalankan perintah untuk men-enable hidden. Jika checkbox4 dipilih maka akan menjalankan perintah untuk men-enable super hidden. Jika checkbox5 dipilih maka akan menjalankan perintah untuk menenable file extension. Jika checkbox6 dipilih maka akan menjalankan perintah untuk men-disable registry tools. Jika checkbox7 dipilih maka akan menjalankan perintah untuk men-disable task manager. Jika checkbox8 dipilih maka akan menjalankan perintah untuk men-disable hidden. Jika checkbox9 dipilih maka
59
akan menjalankan perintah untuk men-disable super hidden. Jika checkbox10 dipilih maka akan menjalankan perintah untuk men-disable file extension. Jika checkbox11 dipilih maka akan menjalankan perintah men-enable folder option. Sedangkan jika checkbox12 yang dipilih, maka program akan menjalankan perintah men-disable folder option. Penambahan reaksi dari button yang telah dibuat seperti pada potongan source code berikut, if (jCheckBox1.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\System"); RegistryValue v = new RegistryValue("DisableRegistryTools", ValueType.REG_DWORD, 0); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nRegistry Tools has beed enabled"); }
Blok statement diatas digunakan untuk men-enable registry tools apabila checkbox1 dipilih dan menekan tombol “OK”. Pada code diatas terdapat pembuatan objek dari RegistryKey yaitu r dimana terdiri dari RootKey dan alamat letak dalm registry. Terdapat juga pembentukkan objek RegistryValue v sebagai nilai dari registry yang akan diubah nilainya, terdiri dari nama registryvalu, valuetype yaitu tipe data dari value tersebut, dan nilai. Statement r.setValue(v) digunakan untuk mengatur value yang diinginkan sebagai nilai dari registry yang ingin diubah. Pada blok tersebut akan menampilkan sebuah messagebox yang menampilkan teks bahwa nilai dari value telah berhasil diubah. Untuk reaksi pada checkbox dituliskan masing-masing pada method jCheckBox[i]ActionPerformed(java.awt.event.ActionEvent
evt)
dimana
i
merupakan pengganti dari angka 1 hingga banyaknya checkbox yang digunakan, bukan index dari array. Jika checkbox dipilih maka checkbox yang tidak dipilih diatur properti enable-nya menjadi false dan properti enable dari button menjadi
60
true. Sedangkan jika checkbox yang dipilih tadi tidak di-check, maka properti enable dari checkbox lain menjadi true dan properti enable button menjadi false. Dapat dilihat pada potongan source code berikut, private
void
jCheckBox1ActionPerformed(java.awt.event.ActionEvent
evt) { if (jCheckBox1.isSelected()){ jButton1.setEnabled(true); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } }
Blok statement diatas merupakan method pada checkbox1 dimana apabila checkbox1 dipilih atau di-checked, properti enable checkbox lain akan bernilai false dan true untuk properti enable button dengan perintah setEnabled. Jika
61
checkbox1 tidak dipilih atau di-unchecked maka properti enable button bernilai false dan true untuk properti enable checkbox yang lain. Begitupun untuk reaksi checkbox lain, tidak jauh berbeda.
3.5.4. Pembuatan Tampilan Help Tampilan about merupakan tampilan yang akan ditampilkan apabila memilih About pada menubar Help. Tampilan ini menggunakan class Action dari paket org.jdesktop.application dan paket class swing, yaitu: JLabel dan JButton. Terdiri dari method CareRegAboutBox(java.awt.Frame parent), closeAboutBox(), dan initComponents(). Tampilan ini menampilkan keterangan dari aplikasi berupa deskripsi aplikasi dan cara penggunaan aplikasi yang dibuat pada class CareRegHelpBox. Perhatikan potongan source code berikut, public class CareRegHelpBox extends javax.swing.JDialog { … }
Blok statement diatas merupakan pendeklarasian dari class CareRegHelpBox yang merupakan class turunan dari class javax.swing.JDialog. Pada class ini ditambahkan beberapa label sebagai keterangan yang akan ditampilkan dan sebuah button bertuliskan “Close” yang digunakan untuk menutup tampilan ini. Pada class ini terdapat sebuah method konstruktor yang berfungsi memanggil method lainnya. Perhatika source code berikut,
public CareRegHelpBox(java.awt.Frame parent) { super(parent); initComponents(); getRootPane().setDefaultButton(jButton1); }
Pada method diatas, terdapat perintah super(parent) yang berfungsi untuk mentapatkan nama dari parent dan dijadikan judul dari frame about.
62
initComponent() digunakan untuk memanggil method initComponent() yang menampilkan keterangan, dan button diatur untuk menutup tampilan ini. Method closeAboutBox() { dispose(); } digunakan untuk menutup tampilan ini apabila close icon dipilih. Method initComponent(){ … } digunakan untuk mendapatkan informasi dan mengatur layout tampilan about.
3.5.5. Pembuatan Tampilan About Tampilan about merupakan tampilan yang akan ditampilkan apabila memilih About pada menubar Help. Tampilan ini menggunakan class Action dari paket org.jdesktop.application dan paket class swing, yaitu: JLabel dan JButton. Terdiri dari method CareRegAboutBox(java.awt.Frame parent), closeAboutBox(), dan initComponents(). Tampilan ini menampilkan keterangan dari aplikasi berupa nama aplikasi, deskripsi aplikasi, vendor, desainer, homepage, dan email dari pembuat yang dibuat pada class CareRegAboutBox. Perhatikan potongan source code berikut, public class CareRegAboutBox extends javax.swing.JDialog { … }
Blok
statement
diatas
merupakan
pendeklarasian
dari
class
CareRegAboutBox yang merupakan class turunan dari class javax.swing.JDialog. Pada class ini ditambahkan beberapa label sebagai keterangan yang akan ditampilkan dan sebuah button bertuliskan “Close” yang digunakan untuk menutup tampilan ini. Pada class ini terdapat sebuah method konstruktor yang berfungsi memanggil method lainnya. Perhatika source code berikut, public CareRegAboutBox(java.awt.Frame parent) { super(parent); initComponents(); getRootPane().setDefaultButton(closeButton); }
63
Pada method diatas, terdapat perintah super(parent) yang berfungsi untuk mentapatkan nama dari parent dan dijadikan judul dari frame about. initComponent() digunakan untuk memanggil method initComponent() yang menampilkan keterangan, dan button diatur untuk menutup tampilan ini. Method closeAboutBox() { dispose(); } digunakan untuk menutup tampilan ini apabila close icon dipilih. Method initComponent(){ … } digunakan untuk mendapatkan informasi dan mengatur layout tampilan about.
3.6.
Uji Coba Aplikasi Tahap ini merupakan tahap akhir dari pembuatan aplikasi dengan
melakukan pengujian dengan mengklik menu Run lalu Run Main Project atau menekan F6 pada keyboard. Pada saat di-run, program terlebih dahulu di-build secara otomatis untuk mendapatkan file eksekusi berupa jar yang tersimpan pada folder dist project.
Gambar 3.22 Tampilan Menu Fungsi Registry
Tampilan yang akan pertama kali dilihat oleh user apabila file eksekusi aplikasi dipilih dan dijalankan dari folder explorer, terdiri dari menu bar, checkbox dengan keterangan yang dapat dipilih, dan tombol “OK” yang diatur properti enable-nya bernilai false.
64
Gambar 3.23 Tampilan Checkbox Dipilih
Tampilan apabila salah satu checkbox dipilih yang mengakibatkan properti enable dari checkbox lainnya bernilai false yang dimaksudkan aplikasi ini hanya dapat menjalankan satu perintah dari checkbox dan enable dari tombol OK bernilai true untuk mengeksekusi aplikasi.
Gambar 3.24 Tampilan Pesan yang Muncul
Merupakan tampilan messageDialogBox yang dihasilkan oleh koding menggunakan paket java Swing yaitu JoptionPane yang memberikan sebuah keterangan dengan teks apabila salah satu checkbox dipilih dan menekan tombol ok.
Keterangan
tersebut
adalah
teks
“Value
“[CheckBox.Name] has been Enabled/Disabled”.
Change
Success”
dan
65
Gambar 3.25 Tampilan Help
Merupakan tampilan yang akan ditampilkan apabila memilih menu bar Help lalu Tutorial. Tampilan ini terdiri dari beberap label yang memberikan keterangan seperti yang tertulis pada gambar 3.25 diatas. Sebuah tombol bertuliskan “Close” berfungsi untuk menutup tampilan ini dan menu fungsi registry kembali aktif.
Gambar 3.26 Tampilan About
Merupakan tampilan yang akan ditampilkan apabila memilih menu bar Help lalu About. Tampilan ini terdiri dari beberapa label yang memberikan keterangam seperti: nama aplikasi, deskripsi aplikasi, versi aplikasi, desainer, vendor, homepage, dan email. Sebuah tombol bertuliskan “Close” berfungsi untuk menutup tampilan ini dan menu fungsi registry kembali aktif.
4. PENUTUP
4.1.
Kesimpulan Penulisan ini berisi pembuatan aplikasi Care Registry menggunakan
bahasa pemrograman Java J2SE dan NetBeans IDE 6.8 sebagai editor koding Java dari tampilan jendela aplikasi Care Registry. Berdasarkan pembahasan pada babbab sebelumnya, penulis mengambil kesimpulan bahwa aplikasi Care Registry yang dibuat dapat mempermudah para pengguna mengubah value beberapa key pada registry yang diinginkan dengan mudah
tanpa
harus membuka
regedit(registry editor) sistem operasi Windows. Kemudahan tersebut dikarenakan aplikasi ini didesain berbasis GUI dimana fungsi-fungsi key registry ditampilkan dalam menu list dengan checkbox yang dapat dipilih dan memiliki keterangan fungsi key registry yang jelas. Aplikasi ini dapat dijalankan pada sistem operasi Windows yang terinstal aplikasi yang mendukung aplikasi Java.
4.2.
Saran Penulis menyadari bahwa aplikasi yang dibuat masih sangat sederhana
dan memiliki banyak kekurangan, diantaranya adalah fungsi registry yang ditampilkan pada halaman menu pada aplikasi Care Registry masih terbatas pada pengubahan beberapa value key pada registry. Aplikasi Care Registry
ini tidak tertutup untuk dikembangkan dan
diharapkan pada akhirnya aplikasi ini dapat berkembang ke arah yang lebih baik, sehingga dapat semakin mempermudah para pengguna untuk dapat merawat registry komputer dengan mengatur fungsi-fungsi registry sesuai yang diingikan.
66
DAFTAR PUSTAKA
1. Hartati,G.Sri, dkk., Pemrograman GUI Swing Java dengan NetBeans 5, Penerbit Andi, Yogyakarta, 2008.
2. Nugroho, Bunafit, , Konfigurasi dan Manipulasi Registry Windows XP, PT. Elex Media Komputindo, Jakarta, 2007.
3. Shalahuddin,M dan Rosa A.S., Belajar Pemograman dengan Bahasa C++ dan Java, Informatika Bandung, Bandung, 2007.
4. Supardi,Ir. Yuniar, Belajar Semua Edisi Java 2 untuk Segala Tingkat, PT. Elex Media Komputindo, Jakarta, 2009.
5. Abstract Window Toolkit URL http://en.wikipedia.org/wiki/Abstract_Window_Toolkit 20 Juli 2010, 3.20 PM
6. Pengantar Java Swing URL http://sinau-java.blogspot.com/2008/05/pengantar-java-swing.html 20 Juli 2010, 3.40 PM
7. Swing (Java) URL http://en.wikipedia.org/wiki/Swing_(Java) 20 Juli 2010, 3.42 PM
8. Windows Registry URL http://id.wikipedia.org/wiki/Windows_Registry 20 Juli 2010, 3.15 PM 67
Lampiran Listing Program 1. CareRegApp.java package carereg; import org.jdesktop.application.Application; import org.jdesktop.application.SingleFrameApplication; public class CareRegApp extends SingleFrameApplication { @Override protected void startup() { show(new CareRegView(this)); } @Override protected void configureWindow(java.awt.Window root) { } public static CareRegApp getApplication() { return Application.getInstance(CareRegApp.class); } public static void main(String[] args) { launch(CareRegApp.class, args); } } 2. CareRegView.java package carereg; import ca.beq.util.win32.registry.RegistryKey; import ca.beq.util.win32.registry.RegistryValue; import ca.beq.util.win32.registry.RootKey; import ca.beq.util.win32.registry.ValueType; import ca.beq.util.win32.registry.Win32Exception; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; L- 1
L- 2
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.Timer; import javax.swing.JFrame; import javax.swing.JOptionPane; public class CareRegView extends FrameView { public CareRegView(SingleFrameApplication app) { super(app); initComponents(); ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon);
L- 3
progressBar.setVisible(false); TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String)(evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer)(evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); } @Action public void showAboutBox() { if (aboutBox == null) { JFrame mainFrame = CareRegApp.getApplication().getMainFrame(); aboutBox = new CareRegAboutBox(mainFrame);
L- 4
aboutBox.setLocationRelativeTo(mainFrame); } CareRegApp.getApplication().show(aboutBox); } @Action public void showHelpBox() { if (helpBox == null) { JFrame mainFrame = CareRegApp.getApplication().getMainFrame(); helpBox = new CareRegHelpBox(mainFrame); helpBox.setLocationRelativeTo(mainFrame); } CareRegApp.getApplication().show(helpBox); } @SuppressWarnings("unchecked") private void initComponents() { try { mainPanel =(javax.swing.JPanel)java.beans.Beans.instantiate(getClass().getClassLoader (), "carereg.CareRegView_mainPanel"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (java.io.IOException e) { e.printStackTrace(); } mainPanel = new javax.swing.JPanel(); jSeparator1 = new javax.swing.JSeparator(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jCheckBox1 = new javax.swing.JCheckBox(); jCheckBox2 = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); jCheckBox3 = new javax.swing.JCheckBox(); jCheckBox4 = new javax.swing.JCheckBox(); jCheckBox5 = new javax.swing.JCheckBox(); jSeparator1 = new javax.swing.JSeparator(); jLabel2 = new javax.swing.JLabel(); jCheckBox6 = new javax.swing.JCheckBox();
L- 5
jCheckBox7 = new javax.swing.JCheckBox(); jCheckBox8 = new javax.swing.JCheckBox(); jCheckBox9 = new javax.swing.JCheckBox(); jCheckBox10 = new javax.swing.JCheckBox(); jCheckBox11 = new javax.swing.JCheckBox(); jCheckBox12 = new javax.swing.JCheckBox(); menuBar = new javax.swing.JMenuBar(); javax.swing.JMenu fileMenu = new javax.swing.JMenu(); javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); javax.swing.JMenu helpMenu = new javax.swing.JMenu(); aboutMenuItem = new javax.swing.JMenuItem(); statusPanel = new javax.swing.JPanel(); statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); jSeparator2 = new javax.swing.JSeparator(); progressBar = new javax.swing.JProgressBar(); jFrame1 = new javax.swing.JFrame(); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(carereg.CareRegApp.class). getContext().getResourceMap(CareRegView.class); jCheckBox1.setFont(resourceMap.getFont("jCheckBox1.font")); jCheckBox1.setText(resourceMap.getString("jCheckBox1.text")); jCheckBox1.setName("jCheckBox1"); jCheckBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox1ActionPerformed(evt); } }); jCheckBox2.setFont(resourceMap.getFont("jCheckBox4.font")); jCheckBox2.setText(resourceMap.getString("jCheckBox2.text")); jCheckBox2.setName("jCheckBox2"); jCheckBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox2ActionPerformed(evt); } });
L- 6
jLabel1.setFont(resourceMap.getFont("jLabel1.font")); jLabel1.setText(resourceMap.getString("jLabel1.text")); jLabel1.setName("jLabel1"); jCheckBox3.setFont(resourceMap.getFont("jCheckBox4.font")); jCheckBox3.setText(resourceMap.getString("jCheckBox3.text")); jCheckBox3.setName("jCheckBox3"); jCheckBox3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox3ActionPerformed(evt); } }); jCheckBox4.setFont(resourceMap.getFont("jCheckBox4.font")); jCheckBox4.setText(resourceMap.getString("jCheckBox4.text")); jCheckBox4.setName("jCheckBox4"); jCheckBox4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox4ActionPerformed(evt); } }); jCheckBox5.setFont(resourceMap.getFont("jCheckBox5.font")); jCheckBox5.setText(resourceMap.getString("jCheckBox5.text")); jCheckBox5.setName("jCheckBox5"); jCheckBox5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox5ActionPerformed(evt); } }); jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); jSeparator1.setName("jSeparator1"); jLabel2.setFont(resourceMap.getFont("jLabel2.font")); jLabel2.setText(resourceMap.getString("jLabel2.text")); jLabel2.setName("jLabel2"); jCheckBox6.setFont(resourceMap.getFont("jCheckBox6.font")); jCheckBox6.setText(resourceMap.getString("jCheckBox6.text"));
L- 7
jCheckBox6.setName("jCheckBox6"); jCheckBox6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox6ActionPerformed(evt); } }); jCheckBox7.setFont(resourceMap.getFont("jCheckBox7.font")); jCheckBox7.setText(resourceMap.getString("jCheckBox7.text")); jCheckBox7.setName("jCheckBox7"); jCheckBox7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox7ActionPerformed(evt); } }); jCheckBox8.setFont(resourceMap.getFont("jCheckBox7.font")); jCheckBox8.setText(resourceMap.getString("jCheckBox8.text")); jCheckBox8.setName("jCheckBox8"); jCheckBox8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox8ActionPerformed(evt); } }); jCheckBox9.setFont(resourceMap.getFont("jCheckBox7.font")); jCheckBox9.setText(resourceMap.getString("jCheckBox9.text")); jCheckBox9.setName("jCheckBox9"); jCheckBox9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox9ActionPerformed(evt); } }); jCheckBox10.setFont(resourceMap.getFont("jCheckBox7.font")); jCheckBox10.setText(resourceMap.getString("jCheckBox10.text")); jCheckBox10.setName("jCheckBox10"); jCheckBox10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox10ActionPerformed(evt);
L- 8
} }); jCheckBox11.setFont(resourceMap.getFont("jCheckBox11.font")); jCheckBox11.setText(resourceMap.getString("jCheckBox11.text")); jCheckBox11.setName("jCheckBox11"); jCheckBox11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox11ActionPerformed(evt); } }); jCheckBox12.setFont(resourceMap.getFont("jCheckBox12.font")); jCheckBox12.setText(resourceMap.getString("jCheckBox12.text")); jCheckBox12.setName("jCheckBox12"); jCheckBox12.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox12ActionPerformed(evt); } }); javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGap(49, 49, 49) .addComponent(jLabel1)) .addGroup(mainPanelLayout.createSequentialGroup() .addGap(23, 23, 23) .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING)
L- 9
.addComponent(jCheckBox2) .addComponent(jCheckBox1) .addComponent(jCheckBox3) .addComponent(jCheckBox4) .addComponent(jCheckBox5) .addComponent(jCheckBox11)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED , 66, Short.MAX_VALUE) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGap(63, 63, 63) .addComponent(jLabel2)) .addGroup(mainPanelLayout.createSequentialGroup() .addGap(37, 37, 37) .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addComponent(jCheckBox7) .addComponent(jCheckBox6) .addComponent(jCheckBox8) .addComponent(jCheckBox9) .addComponent(jCheckBox10) .addComponent(jCheckBox12)))) .addGap(65, 65, 65)) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap()
L- 10
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(jLabel1) .addGap(21, 21, 21) .addComponent(jCheckBox1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jCheckBox2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jCheckBox4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jCheckBox11)) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(jLabel2) .addGap(18, 18, 18) .addComponent(jCheckBox6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox8)
L- 11
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jCheckBox12))) .addGap(86, 86, 86)) .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE) ); menuBar.setName("menuBar"); fileMenu.setText(resourceMap.getString("fileMenu.text")); fileMenu.setName("fileMenu"); javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(carereg.CareRegApp.class). getContext().getActionMap(CareRegView.class, this); exitMenuItem.setAction(actionMap.get("quit")); exitMenuItem.setName("exitMenuItem"); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); helpMenu.setText(resourceMap.getString("helpMenu.text")); helpMenu.setName("helpMenu"); jMenuItem1.setAction(actionMap.get("showHelpBox")); jMenuItem1.setText(resourceMap.getString("jMenuItem1.text")); jMenuItem1.setName("jMenuItem1"); helpMenu.add(jMenuItem1);
L- 12
aboutMenuItem.setAction(actionMap.get("showAboutBox")); aboutMenuItem.setName("aboutMenuItem"); helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); statusPanel.setName("statusPanel"); statusPanelSeparator.setName("statusPanelSeparator"); statusMessageLabel.setName("statusMessageLabel");
statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants. LEFT); statusAnimationLabel.setName("statusAnimationLabel"); progressBar.setName("progressBar"); jButton1.setText(resourceMap.getString("jButton1.text")); jButton1.setName("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel); statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.TRAILING)
L- 13
.addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(statusMessageLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED , 252, Short.MAX_VALUE)) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(jButton1) .addGap(18, 18, 18))) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(statusAnimationLabel) .addContainerGap()) ); statusPanelLayout.setVerticalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(statusPanelLayout.createSequentialGroup() .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addGroup(statusPanelLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED , 21, Short.MAX_VALUE) .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.BASELINE) .addComponent(statusMessageLabel) .addComponent(statusAnimationLabel)
L- 14
.addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3)) .addGroup(statusPanelLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jButton1) .addContainerGap()))) ); setComponent(mainPanel); setMenuBar(menuBar); setStatusBar(statusPanel); } private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox1.isSelected()){ jButton1.setEnabled(true); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true);
L- 15
jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox2.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); }
L- 16
} private void jCheckBox3ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox3.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox4ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox4.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false);
L- 17
jCheckBox3.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox5ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox5.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false);
L- 18
jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox6ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox6.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true);
L- 19
jCheckBox5.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox7ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox7.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); }
L- 20
} private void jCheckBox8ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox8.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox9ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox9.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false);
L- 21
jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox10ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox10.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox11.setEnabled(false);
L- 22
jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox11.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox11ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox11.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox12.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true);
L- 23
jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox12.setEnabled(true); } } private void jCheckBox12ActionPerformed(java.awt.event.ActionEvent evt) { if (jCheckBox12.isSelected()){ jButton1.setEnabled(true); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jCheckBox5.setEnabled(false); jCheckBox6.setEnabled(false); jCheckBox7.setEnabled(false); jCheckBox8.setEnabled(false); jCheckBox9.setEnabled(false); jCheckBox10.setEnabled(false); jCheckBox11.setEnabled(false); } else { jButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jCheckBox5.setEnabled(true); jCheckBox6.setEnabled(true); jCheckBox7.setEnabled(true); jCheckBox8.setEnabled(true); jCheckBox9.setEnabled(true); jCheckBox10.setEnabled(true); jCheckBox11.setEnabled(true); }
L- 24
}//GEN-LAST:event_jCheckBox12ActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //RegistryKey.initialize(new File(".").getAbsolutePath() + // "\\lib\\jRegistryKey.dll"); if (jCheckBox1.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\System"); RegistryValue v = new RegistryValue("DisableRegistryTools", ValueType.REG_DWORD, 0); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nRegistry Tools has beed enabled"); } else if(jCheckBox2.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\System"); RegistryValue v = new RegistryValue("DisableTaskMgr", ValueType.REG_DWORD, 0); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nTask Manager has beed enabled"); } else if(jCheckBox3.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + "\\Advanced"); RegistryValue v = new RegistryValue("Hidden", ValueType.REG_DWORD, 0); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nHidden has beed enabled"); } else if(jCheckBox4.isSelected()){
L- 25
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + "\\Advanced"); RegistryValue v = new RegistryValue("ShowSuperHidden", ValueType.REG_DWORD, 0); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nSupper Hidden has beed enabled"); } else if(jCheckBox5.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + "\\Advanced"); RegistryValue v = new RegistryValue("HideFileExt", ValueType.REG_DWORD, 0); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nHide File Ext has beed enabled"); } else if(jCheckBox6.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\System"); RegistryValue v = new RegistryValue("DisableRegistryTools", ValueType.REG_DWORD, 1); JOptionPane.showMessageDialog(null,"Value change success" + "\nRegistry Tools has beed disabled"); } else if(jCheckBox7.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\System"); RegistryValue v = new RegistryValue("DisableTaskMgr", ValueType.REG_DWORD, 1); JOptionPane.showMessageDialog(null,"Value change success" + "\nTask Manager has beed disabled");
L- 26
} else if(jCheckBox8.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + "\\Advanced"); RegistryValue v = new RegistryValue("Hidden", ValueType.REG_DWORD, 1); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nHidden has beed disabled"); } else if(jCheckBox9.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + "Advanced"); RegistryValue v = new RegistryValue("ShowSuperHidden", ValueType.REG_DWORD, 1); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nSupper Hidden has beed disabled"); } else if(jCheckBox10.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" + "\\Advanced"); RegistryValue v = new RegistryValue("HideFileExt", ValueType.REG_DWORD, 1); r.setValue(v); JOptionPane.showMessageDialog(null,"Value change success" + "\nHide File Ext has beed disabled"); } else if(jCheckBox11.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\Explorer"); RegistryValue v = new RegistryValue("NoFolderOptions",
L- 27
ValueType.REG_DWORD_LITTLE_ENDIAN, 0); JOptionPane.showMessageDialog(null,"Value change success" + "\nFolder Option has beed enabled"); } else if(jCheckBox12.isSelected()){ RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + "\\Explorer"); RegistryValue v = new RegistryValue("NoFolderOptions", ValueType.REG_DWORD_LITTLE_ENDIAN, 1); JOptionPane.showMessageDialog(null,"Value change success" + "\nFolder Option has beed disabled"); } } private javax.swing.JMenuItem aboutMenuItem; private javax.swing.JMenu helpMenu; private javax.swing.JButton jButton1; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox10; private javax.swing.JCheckBox jCheckBox11; private javax.swing.JCheckBox jCheckBox12; private javax.swing.JCheckBox jCheckBox2; private javax.swing.JCheckBox jCheckBox3; private javax.swing.JCheckBox jCheckBox4; private javax.swing.JCheckBox jCheckBox5; private javax.swing.JCheckBox jCheckBox6; private javax.swing.JCheckBox jCheckBox7; private javax.swing.JCheckBox jCheckBox8; private javax.swing.JCheckBox jCheckBox9; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JSeparator jSeparator1; private javax.swing.JPanel mainPanel; private javax.swing.JMenuBar menuBar; private javax.swing.JProgressBar progressBar; private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel;
L- 28
private javax.swing.JPanel statusPanel; private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon; private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0; private JDialog aboutBox; private JDialog helpBox; } 3. CareRegAboutBox.java package carereg; import org.jdesktop.application.Action; public class CareRegAboutBox extends javax.swing.JDialog { public CareRegAboutBox(java.awt.Frame parent) { super(parent); initComponents(); getRootPane().setDefaultButton(closeButton); } @Action public void closeAboutBox() { dispose(); } private void initComponents() { closeButton = new javax.swing.JButton(); javax.swing.JLabel appTitleLabel = new javax.swing.JLabel(); javax.swing.JLabel versionLabel = new javax.swing.JLabel(); javax.swing.JLabel appVersionLabel = new javax.swing.JLabel(); javax.swing.JLabel vendorLabel = new javax.swing.JLabel(); javax.swing.JLabel appVendorLabel = new javax.swing.JLabel(); javax.swing.JLabel homepageLabel = new javax.swing.JLabel(); javax.swing.JLabel appHomepageLabel = new javax.swing.JLabel(); javax.swing.JLabel appDescLabel = new javax.swing.JLabel();
L- 29
javax.swing.JLabel imageLabel = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CL OSE); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(carereg.CareRegApp.class). getContext().getResourceMap(CareRegAboutBox.class); setTitle(resourceMap.getString("title")); setModal(true); setName("aboutBox"); setResizable(false); javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(carereg.CareRegApp.class). getContext().getActionMap(CareRegAboutBox.class, this); closeButton.setAction(actionMap.get("closeAboutBox")); closeButton.setName("closeButton");
appTitleLabel.setFont(appTitleLabel.getFont().deriveFont(appTitleLabel.getF ont().getStyle() | java.awt.Font.BOLD, appTitleLabel.getFont().getSize()+4)); appTitleLabel.setText(resourceMap.getString("Application.title")); appTitleLabel.setName("appTitleLabel");
versionLabel.setFont(versionLabel.getFont().deriveFont(versionLabel.getFon t().getStyle() | java.awt.Font.BOLD)); versionLabel.setText(resourceMap.getString("versionLabel.text")); versionLabel.setName("versionLabel");
appVersionLabel.setText(resourceMap.getString("Application.version")); appVersionLabel.setName("appVersionLabel");
L- 30
vendorLabel.setFont(vendorLabel.getFont().deriveFont(vendorLabel.getFont( ).getStyle() | java.awt.Font.BOLD)); vendorLabel.setText(resourceMap.getString("vendorLabel.text")); vendorLabel.setName("vendorLabel"); appVendorLabel.setText(resourceMap.getString("Application.vendor")); appVendorLabel.setName("appVendorLabel");
homepageLabel.setFont(homepageLabel.getFont().deriveFont(homepageLabe l.getFont().getStyle() | java.awt.Font.BOLD)); homepageLabel.setText(resourceMap.getString("homepageLabel.text")); homepageLabel.setName("homepageLabel");
appHomepageLabel.setText(resourceMap.getString("Application.homepage") ); appHomepageLabel.setName("appHomepageLabel"); appDescLabel.setText(resourceMap.getString("appDescLabel.text")); appDescLabel.setName("appDescLabel"); imageLabel.setIcon(resourceMap.getIcon("imageLabel.icon")); imageLabel.setName("imageLabel"); jLabel1.setFont(resourceMap.getFont("jLabel1.font")); jLabel1.setText(resourceMap.getString("jLabel1.text")); jLabel1.setName("jLabel1"); jLabel2.setText(resourceMap.getString("jLabel2.text")); jLabel2.setName("jLabel2"); jLabel3.setFont(resourceMap.getFont("jLabel3.font")); jLabel3.setText(resourceMap.getString("jLabel3.text")); jLabel3.setName("jLabel3"); jLabel4.setText(resourceMap.getString("jLabel4.text")); jLabel4.setName("jLabel4");
L- 31
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(imageLabel) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(appTitleLabel) .addComponent(appDescLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED , 211, Short.MAX_VALUE) .addComponent(closeButton)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(vendorLabel) .addComponent(homepageLabel) .addComponent(jLabel1)) .addGap(34, 34, 34) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(jLabel2) .addComponent(appVendorLabel) .addComponent(appHomepageLabel))) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(versionLabel) .addComponent(jLabel3))
L- 32
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(jLabel4) .addComponent(appVersionLabel)))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(imageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 209, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(appTitleLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(appDescLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(appVersionLabel) .addComponent(versionLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED , javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(jLabel3)
L- 33
.addComponent(jLabel4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(vendorLabel) .addComponent(appVendorLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(homepageLabel) .addComponent(appHomepageLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(jLabel1) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(closeButton) .addContainerGap()) ); pack(); } private javax.swing.JButton closeButton; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; }
L- 34
4. CareRegHelpBox.java package carereg; import org.jdesktop.application.Action; public class CareRegHelpBox extends javax.swing.JDialog { public CareRegHelpBox(java.awt.Frame parent) { super(parent); initComponents(); getRootPane().setDefaultButton(jButton1); } @Action public void closeAboutBox() { dispose(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); jLabel16 = new javax.swing.JLabel(); jLabel17 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CL OSE);
L- 35
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(carereg.CareRegApp.class). getContext().getResourceMap(CareRegHelpBox.class); setTitle(resourceMap.getString("helpBox.title")); setBackground(resourceMap.getColor("helpBox.background")); setFont(resourceMap.getFont("helpBox.font")); setForeground(resourceMap.getColor("helpBox.foreground")); setIconImage(null); setModal(true); setName("helpBox"); setResizable(false); jLabel1.setFont(resourceMap.getFont("jLabel1.font")); jLabel1.setText(resourceMap.getString("jLabel1.text")); jLabel1.setName("jLabel1"); jLabel2.setText(resourceMap.getString("jLabel2.text")); jLabel2.setName("jLabel2"); jLabel3.setText(resourceMap.getString("jLabel3.text")); jLabel3.setName("jLabel3"); jLabel4.setText(resourceMap.getString("jLabel4.text")); jLabel4.setName("jLabel4"); jLabel5.setText(resourceMap.getString("jLabel5.text")); jLabel5.setName("jLabel5"); jLabel6.setText(resourceMap.getString("jLabel6.text")); jLabel6.setName("jLabel6"); jLabel7.setText(resourceMap.getString("jLabel7.text")); jLabel7.setName("jLabel7"); jLabel8.setText(resourceMap.getString("jLabel8.text")); jLabel8.setName("jLabel8"); jLabel9.setText(resourceMap.getString("jLabel9.text")); jLabel9.setName("jLabel9");
L- 36
jLabel10.setText(resourceMap.getString("jLabel10.text")); jLabel10.setName("jLabel10"); jLabel11.setFont(resourceMap.getFont("jLabel11.font")); jLabel11.setText(resourceMap.getString("jLabel11.text")); jLabel11.setName("jLabel11"); jLabel12.setText(resourceMap.getString("jLabel12.text")); jLabel12.setName("jLabel12"); jLabel13.setText(resourceMap.getString("jLabel13.text")); jLabel13.setName("jLabel13"); jLabel14.setText(resourceMap.getString("jLabel14.text")); jLabel14.setName("jLabel14"); jLabel15.setText(resourceMap.getString("jLabel15.text")); jLabel15.setName("jLabel15"); jLabel16.setText(resourceMap.getString("jLabel16.text")); jLabel16.setName("jLabel16"); jLabel17.setText(resourceMap.getString("jLabel17.text")); jLabel17.setName("jLabel17"); jButton1.setText(resourceMap.getString("jButton1.text")); jButton1.setName("jButton1"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 376, javax.swing.GroupLayout.PREFERRED_SIZE)
L- 37
.addGap(22, 22, 22)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel3) .addContainerGap(487, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(69, 69, 69) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(jLabel9) .addComponent(jLabel8) .addComponent(jLabel7) .addComponent(jLabel6) .addComponent(jLabel5) .addComponent(jLabel4)) .addContainerGap(361, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(132, 132, 132) .addComponent(jLabel1) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel10) .addContainerGap(275, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel11) .addContainerGap(397, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel12) .addContainerGap(448, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(layout.createSequentialGroup()
L- 38
.addGap(10, 10, 10) .addComponent(jLabel14)) .addComponent(jLabel13)) .addContainerGap(294, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel15) .addContainerGap(405, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel16) .addContainerGap(675, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel17) .addContainerGap(283, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(156, 156, 156) .addComponent(jButton1) .addContainerGap(468, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addGap(27, 27, 27) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED )
L- 39
.addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel11) .addGap(18, 18, 18) .addComponent(jLabel12) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel13) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel14) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel15)
L- 40
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jLabel16) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED ) .addComponent(jLabel17) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jButton1) .addContainerGap(115, Short.MAX_VALUE)) ); getAccessibleContext().setAccessibleParent(this); pack(); } private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; }
L- 41
Lampiran Output Program 1. Tampilan Launch CareReg.java
Gambar L-1 Tampilan Output Launch CareReg.java
Gambar L-2 Tampilan Output Checkbox Disable Registry Tools
Gambar L-3 Tampilan Output Message Box Disable Registry Tools
L- 42
Gambar L-4 Tampilan Output Akses Regedit Ditolak
Gambar L-5 Tampilan Output Checkbox Disable Task Manager
Gambar L-6 Tampilan Output Message Box Disable Task Manager
L- 43
Gambar L-7 Tampilan Output Akses Task Manager Ditolak
Gambar L-8 Tampilan Output Checkbox Disable Hidden
Gambar L-9 Tampilan Output Message Box Disable Hidden
L- 44
Gambar L-10 Tampilan Output Folder yang di-Hidden
Gambar L-11 Tampilan Output Checkbox Disable SuperHidden
Gambar L-12 Tampilan Output Message Box Disable SuperHidden
L- 45
Gambar L-13 Tampilan Output Checkbox Disable File Extension
Gambar L-14 Tampilan Output Message Box Disable File Extension
Gambar L-15 Tampilan Output Folder File tanpa Ekstensi
L- 46
Gambar L-16 Tampilan Output Checkbox Disable Folder Option
Gambar L-17 Tampilan Output Message Box Disable Folder Option
Gambar L-18 Tampilan Output Akses Folder Option Ditolak
L- 47
Gambar L-19 Tampilan Output Checkbox Enable Registry Tools
Gambar L-20 Tampilan Output Message Box Enable Registry Tools
Gambar L-21 Tampilan Output Akses Regedit
L- 48
Gambar L-22 Tampilan Output Checkbox Enable Task Manager
Gambar L-23 Tampilan Output Message Box Enable Task Manager
Gambar L-24 Tampilan Output Akses Task Manager
L- 49
Gambar L-25 Tampilan Output Checkbox Enable Hidden
Gambar L-26 Tampilan Output Message Box Enable Hidden
Gambar L-27 Tampilan Output Folder File
L- 50
Gambar L-28 Tampilan Output Checkbox Enable SuperHidden
Gambar L-29 Tampilan Output Message Box Enable SuperHidden
Gambar L-30 Tampilan Output Checkbox Enable File Extension
Gambar L-31 Tampilan Output Message Box Enable File Extension
L- 51
Gambar L-32 Tampilan Output Folder File dengan Ekstensi
Gambar L-33 Tampilan Output Checkbox Enable Folder Option
Gambar L-34 Tampilan Output Message Box Enable Folder Option
L- 52
Gambar L-35 Tampilan Output Akses Folder Option
2. Tampilan CareRegAboutBox.java
Gambar L-36 Tampilan Output CareRegAboutBox.java
3. Tampilan CareRegHelpBox.java
Gambar L-36 Tampilan Output CareRegHelpBox.java