penulisan ilmiah - hari s - 50407401 - t.informatika · pdf filepi, jurusan teknik...
TRANSCRIPT
PENULISAN ILMIAH
Diajukan Guna Melengkapi Sebagian Syarat
Mencapai Jenjang D III/Setara Sarjana Muda
Jurusan Teknik Informatika
Fakultas Teknologi Industri
Universitas Gunadarma
2010-2011
PEMBUATAN APLIKASI CARE REGISTRYMENGGUNAKAN J2SE
Nama : Hari SulistioNPM : 504 07 401Fakultas : Teknologi IndustriJurusan : Teknik InformatikaPembimbing : Deasy Indayanti, SKom., MMSI.
ii
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)
iii
LEMBAR PENGESAHAN
Judul PI : Pembuatan Aplikasi Care Registry Menggunakan J2SE
Nama : Hari Sulistio
NPM : 50407401
NIRM :
Tanggal Sidang :
Tanggal Lulus :
Menyetujui
Pembimbing
( Deasy Indayanti, SKom., MMSI. )
Koordinator PI
( Meilani B. Siregar, SKom., MMSI.)
Ketua Jurusan
( Dr. Ing. Adang Suhendra, SSi., SKom., MSc. )
iv
ABSTRAKSI
Hari Sulistio.50407401.Pembuatan Aplikasi Care Registry Menggunakan J2SEPI, Jurusan Teknik Informatika, Fakultas Teknologi Industri, Universitas Gunadarama, 2011Kata 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)
v
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 satu-
persatu.
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.
vi
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
vii
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
viii
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
ix
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
3.6. Uji Coba Aplikasi ……………………………………..…………... 63
4. PENUTUP …………………….……………………………………….... 66
DAFTAR PUSTAKA ……………………………………………………….. 67
x
DAFTAR TABEL
HalamanTabel 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
xi
DAFTAR GAMBAR
HalamanGambar 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
xii
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
xiii
DAFTAR LAMPIRAN
HalamanLAMPIRAN LISTING PROGRAM ……………………………………. L- 1
LAMPIRAN OUTPUT PROGRAM ……………………………………. L-41
1
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.
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.
4
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
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 Sun solaris
o Macos
o Novell netware 4.0
o Hpux
o Hitachi os
o Aix
o Irix
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 bermacam-
macam, 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 aplikasi-
aplikasi 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 fungsi-
fungsi 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 Keterangan
Language java.langClass-class utama yang merupakan inti
dari bahasa java
Utilities java.utilClass-class yang mendukung utilitas
struktur java
I/O java.ioClass yang mendukung berbagai macam
tipe input dan output
19
Lanjutan Tabel 2.4 Tabel Package pada J2SE
Text java.text
Class yang mendukung lokalisasi
penanganan teks, tanggal, bilangan, dan
message
Math java.math
Class untuk melakukan perhitungan
aritmatik arbitrary-precesion, baik
integer atau floating point
AWT java.awtClass untuk perancangan user-interface
dan envent-handling.
Swing javax.swing
Class untuk membuat berbagai
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.reflectClass untuk memperoleh informasi run-
time
SQL java.sqlClass untuk mendukung akses dan
pengolahan data dalam database
RMI java.rmiClass untuk mendukung distributed
programming
Networking java.netClass untuk medukung dalam
membangun aplikasi jaringan
Security java.securityClass untuk mendukung keamanan
kriptografi
2.3. 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. Top-
level 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.
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.
MenuBar Toolbar Main Window Komponen Pallete
Form Designer Properties
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.
Gambar 2.7 Component Palette
Page Control Icon Button
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>\<key>\<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-and-
play. 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 macam-
macam (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 64-
bit. 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 yang digunakan adalah
REG_QWORD_LITTLE_ENDIAN. Diperlukan editor khusus 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 terdapat dua editor registry, yakni regedit.exe dan
regedt32.exe. Regedit.exe merupakan bawaan Windows 95, 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 root-
directory 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 window-
nya 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.
41
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.
Gambar 3.1 Skema Rancangan Aplikasi
Registry Windows List pengaturanregistry
Komputer Pengguna
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 class-
class 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
Gambar 3.18 Tampilan jRegistryKey.dll Pada Folder System32
Gambar 3.19 Tampilan Membuka Properti Project
jRegistryKey.dll
Pilih Properties
Klik kanan pada nama project
56
Gambar 20 Tampilan Properti Project
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.
Pilih librariesPilih Add Jar/Folder
Pilih jRegistryKey.jar
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 men-
enable 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 Change Success” dan
“[CheckBox.Name] has been Enabled/Disabled”.
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.
66
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 bab-
bab 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.
67
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
L- 1
Lampiran Listing Program
1. CareRegApp.javapackage 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.javapackage 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- 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.UNRELATED) .addComponent(jCheckBox3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jCheckBox4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .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.UNRELATED) .addComponent(jCheckBox7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCheckBox8)
L- 11
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCheckBox9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCheckBox10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .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.javapackage 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_CLOSE); 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.getFont().getStyle() | java.awt.Font.BOLD, appTitleLabel.getFont().getSize()+4)); appTitleLabel.setText(resourceMap.getString("Application.title")); appTitleLabel.setName("appTitleLabel");
versionLabel.setFont(versionLabel.getFont().deriveFont(versionLabel.getFont().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(homepageLabel.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.UNRELATED) .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.javapackage 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_CLOSE);
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.UNRELATED) .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.UNRELATED) .addComponent(jLabel16) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel17) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .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