Anda di halaman 1dari 78

MERANCANG DATABASE PARKIR KENDARAAN

Sebagai tempat studi kasus dari aplikasi yang akan dibuat adalah parkir kendaraan. Dengan adanya aplikasi ini, diharapkan ketika kendaraan masuk maka petugas parkir dapat mencatat data kendaraan secara elektronis menggunakan computer, sehingga dapat memperkecil tingat pencurian dan dapat melakukan pengecekan data sewaktu-waktu data kendaraan dibutuhkan. Dari gambaran di atas, yang perlu anda buat adalah sebuah aplikasi yang dapat membantu untuk pencatatan setiap transaksi yang dilakukan, mulai dari data petugas, data kendaraan, data parkir kendaraan masuk dan parkir kendaraan keluar secara cepat.

Mendeklarasikan Kasus dalam Bentuk Bahasa Model UML


Pekerjaan membuat table akan selalu anda lakukan setelah proses analisis system selesai. Pada buku ini dibahas analisis awalnya dari pendeklarasian UML(Unifed Modeling Language), yaitu menggunakan Use Case Karena ini paling sering digunakan dan cocok untuk kasus tersebut. Selanjutnya akan dilakukan mapping ke tabel secara fisik.

Gambar 1.1 Use Case Diagram Parkir Kendaraan

Pemrograman Berorientasi Objek Lanjut

Pengendara sebagai pelaku pemarkir kendaraan akan melakukan registrasi data kendaraan masuk dan registrasi kendaraan keluar. Sedangkan petugas sebagai orang yang mengoperasikan aplikasi parkir kendaraan.

Membuat Database dan Tabel


Pada gambaran sebelumnya, sekarang anda perlu memikirkan seberapa besar database yang akan diperlukan. Dari hasil pemikiran tersebut anda akan mengira-ira berapa dan apa tabel yang akan digunaka sebagai media penyimpanan datanya.

Membuat Database Dari analisis kami, untuk membuat aplikasi ini kita membutuhkan 3 tabel. Terdiri atas 2 tabel master dan 1 tabel transaksi. Ketiga tabe tersebut berada di dalam nama database dbparkir.
C:\Documents and Setting>mysql uroot -p Enter Password:Masukkan Password anda Mysql> CREATE DATABASE dbparkir; Query OK, 1 row affected (0.00 sec)

Selanjutnya, aktifkanlah database yang terbuat dengan perintah berikut:


Mysql> USE dbparir; Database changed

Pernyataan Database changed di atas menandakan anda sekarang telah aktif di dalam database dbparkir. Membuat Tabel tbljnskendaraan Tabel Jenis Kendaraan digunakan untuk merekam data semua jenis kendaraan. Dengan cara ini, kita dapat mengelompokkan jenis kendaraan.Berikut desain tabelnya. Tabel 1.1 Struktur Tabel tbljnskendaraan Kolom kodejenis * jenis tarif Tipe Data Char Varchar Char Panjang 2 40 10

Pemrograman Berorientasi Objek Lanjut

Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tbljnsjendaraan( kodejenis char(2) not null primary key, jenis varchar(40), tarif char(10) );

Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tbljnskendaraan.

Membuat Tabel tblpetugas Tabel Jenis Kendaraan digunakan untuk merekam data semua petugas. Dengan cara ini, kita dapat mengetahui petugas jaga parkir.Berikut desain tabelnya. Tabel 1.2 Struktur Tabel tblpetugas Kolom idpetugas * nmpetugas alamat telp Tipe Data Char Varchar Varchar Varchar Panjang 4 60 100 15

Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tblpetugas( idpetugas char(4) not null primary key, nmpetugas varchar(60), alamat varchar(100), telp varchar(10) );

Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tblpetugas.

Membuat Tabel tblparkir Tabel Jenis Kendaraan digunakan untuk merekam data semua kendaraan yang parkir. Dengan cara ini, kita dapat mengetahui semua data kendaraan yang sedang parkir atau yang sudah keluar.Berikut desain tabelnya.

Pemrograman Berorientasi Objek Lanjut

Tabel 1.3 Struktur Tabel tblparkir Kolom Tipe Data Panjang notiket * Char 10 tglparkir Varchar 40 Idpetugas ** Char 4 Noplat Varchar 10 kodejenis ** Char 2 jammasuk Varchar 20 jamkeluar Varchar 20 Bayar Char 10 Sisa Char 10 Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tblparkir( notiket char(10) not null primary key, tglparkir varchar(40), idpetugas char(4), noplat varchar(10), kodejenis char(2), jammasuk varchar(20), jamkeluar varchar(20), bayar char(10), sisa char(10) );

Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tblparkir. Relasi Antar Tabel
TblPetugas idpetugas<PK> nmpetugas alamat telp TblJnsKendaraan kodejenis<PK> jenis tarif TblParkir notiket<PK> tglparkir idpetugas<FK> noplat kodejenis<FK> jammasuk jamkeluar bayar sisa

Pemrograman Berorientasi Objek Lanjut

Gambar 1.2 Hubungan Antar Tabel pada dbparkir

Tanda (PK) menunjukkan kunci utama, sedangkan (FK) adalah kunci tamu dengan diwujudkan arah panahnya. Berikut bebarapa penjelasan relasi tabel tersebut. Relasi antar tabel jenis kendaraan pada tabel parkir kendaraan Relasi dua tabel di atas memiliki hubungan one to many, artinya jenis kendaraan bisa digunakan lebih dari sekali. Relasi antar tabel petugas pada tabel parkir kendaraan Relasi dua tabel di atas memiliki hubungan one to many, artinya petugas bisa digunakan lebih dari sekali.

MEMBUAT APLIKASI PARKIR KENDARAAN


Mulai dari bab ini kami akan membimbing anda untuk membuat proyek lengkap, yaitu dengan objek kasus pada parkir kendaraan. Pada aplikasi yang dibuat, akan terjadi proses transaksi parkir kendaraan masuk dan kendaraan keluar. Tentunya ada proses perhitungan pembayaran jasa parkir. Dalam bonus CD buku ini, juga telah disertakan hasil studi kasus dan komponen pendukung untuk pembuatan aplikasi yang dibahas pada bab ini. Anda bisa membaca bab ini sebagai penjelasan lengkap dan langkah pembuatannya.

Dependency
Dependency ata ketergantungan adalah sebuah syarat ketersediaan sebuah tool berupa modul terpisah maupun aplikasi lain agar bisa menjalankan aplikasi yang dimaksud. Dalam hal ini setidaknya anda harus memasang Netbeans 6.0.1. Tentunya untuk bisa memasangnya juga harus anda penuhi system requirement dari aplikasi tersebut. Untuk system operasi tentunya anda bisa menggunakan Windows/Linux. Dalam hal ini kami menggunakan Windows 7 untuk uji coba. Adapun tool yang lain, yang mesti anda pasang adalah sebagai berikut. Ketergantungan Mesin Sistem Opersai Windows/Linux Netbeans 6.0.1 Jasper Report 2.0.4 MySQL(AppServ2.10.3 boleh menggunakan versi lain)

Pemrograman Berorientasi Objek Lanjut

Ketergantungan Module/com objek maupun resource lain mysql-connector-java-5.1.6-bin untuk objek database yang siap dipakai Birosoft look and feel dan looks.jar sebagai tambahan untuk sekadar menambahkan style atau tampilan saja(ini tidak wajib, sehingga tidak dibahas terlalu jauh agar tidak mengurangi focus buku ini). Persiapan Instalasi dan Folder Program Kami sarankan pembaca mengikuti langkah-langkah yang ada dalam buku ini agar tidak mengalami kesulitan/salah jalan. Kalau tidak mengikuti petunjuk ini, dikhawatirkan anda bisa tersesat sejauh-jauhnya. Catatan: Anda tidak harus mengikuti langkah-langkah instalasi jika sudah memiliki versi yang sama. Dalam buku tidak terlalu banyak memberikan hal-hal yang dasar, bukan keharusan tetapi sangat dianjurkan bagi anda membaca buku edisi sebelumnya. 1. Instal netbeans 6 nama file installer-nya netbeans-6.0.1-ml-javase-windows.exe. klik ganda kemudian lanjutkan dialognya sampai selesai. 2. Instal MySQL dan tool admin lewat Browser Client. Nama filenya appserv-win322.5.10.exe. ikuti petunjuk dan jangan lupa untuk menyimpan nama password atau usernya agar Anda bisa mengakses halaman admin. Jika sampai lupa, anda selamanya tidak bisa membuka database anda sendiri. 3. Siapkan folder khusus untuk membuat kode. Misalnya kami membuat folder D:\Aplikasi Parkir Kendaraan.

Membuat Koneksi Database.ini database.ini digunakan untuk menghubungkan database MySQL dengan JAVA, database.ini dibuat menggunakan Notepade. Berikut langkah membuat koneksi database.ini: 1. Buatlah folder dengan nama folder lib pada direktori D:\Aplikasi Parkir Kendaraan\Aplikasi Parkir Kendaraan\lib. 2. Buatlah koneksi database.ini menggunakan notepade kemudian simapan dengan nama database.ini.

Pemrograman Berorientasi Objek Lanjut

Gambar 1.3 Koneksi database.ini Membuat Project Berikut langkah membuat projek baru : 1. Bukalah editor Netbeans, lalu buat project beru melalui menu File > New Project, sehingga muncul sebuah jendela New Project. 2. Pada kolom Categories pilih Java. Selanjutnya pada kolom projects pilih Java Desktop Application, kemudian tekan tombol Next untuk melanjutkan.

Gambar 1.4 Jendela New Project 3. Isilah Project Name (sebagai nama proyek), Project Location (folder atau lokasi program), Application Class (nama file atau kelas), dan nama kelas utama seperti berikut ini.

Pemrograman Berorientasi Objek Lanjut

Gambar 1.5 Penambahan File Project Dari gambar di atas, perhatikan isian Application Class yang terisi otomatis ketika anda memberikan nilai pada nama Project name: Aplikasi Parkir Kendaraan. Netbeans secara default menyiapkan paket bernama aplikasi parkir kendaraan dan kelas utama aplikasi parkir kendaraan.App. Berarti kita membuat kelas aplikasi parkir kendaraanApp berada dalam paket aplikasi parkir kendaraan. 4. Pada kolom Choose Application Shell pilih Basic Application, anda bisa menyesuaikan foldernya dengan computer anda. 5. Jiksa sudah, klik tombol Finish.

Gambar 1.6 Tampilan Pertama Project Baru Secara default terdapat tiga kelas dalam paket aplikasi parkir kendaraan ini. Anda bisa melihat dalam jendela inspector, antara lain:

Pemrograman Berorientasi Objek Lanjut

AplikasiParkirKendaraanApp.java sebagai kelas utama yang pertama kali dijalankan. AplikasiParkirKendaraanAboutBox.java form info program atau tentang program. AplikasiParkirKendaraanView.java menampilkan menu. 6. Langkah selanjutnya kita akan membuat Database.java dengan cara klik kanan New -> Java Class , kemudian masukkan kode program seperti dibawah ini.

Gambar 1.7 Membuat Java Class File

package aplikasiparkirkendaraan; import java.io.FileInputStream; import java.util.Properties; import javax.swing.JOptionPane; /** * * @author REVOLPER */ public class Database { public Properties mypanel, myLanguage; private String strNamePanel; public Database(){ } public String SettingPanel(String nmPanel){ try { mypanel = new Properties(); mypanel.load(new FileInputStream("lib/database.ini")); strNamePanel = mypanel.getProperty(nmPanel); } catch (Exception e) { JOptionPane.showMessageDialog(null,"Tidak ada koneksi","Error", JOptionPane.INFORMATION_MESSAGE); System.err.println(e.getMessage()); System.exit(0); } return strNamePanel; } }

Pemrograman Berorientasi Objek Lanjut

Membuat Menu Utama


Selanjutnya kita akan memperbaiki kelas AplikasiParkirKendaraanView agar menjadi sebuah menu utama yang bisa dipakai untuk aplikasi parkir kendaraan. Langkah pertama adalah menambahkan menu, yaitu: 1. Pilih menu File pada desain form kelas AplikasiParkirKendaraanView, klik kanan pilih Add Form Palette > Menu item.

Gambar 1.8 Penambahan Menu Baru 2. Sehingga muncul menu baru seperti pada gambar berikut.

Gambar 1.9 Tampilan Menu Baru 3. Sekarang kita bisa memindahkan posisi menu baru itu dengan melakukan drag ke atas ataupun kebawah. Untuk melakukan perubahan teks menu, klik kanan pada menu dan pilih Edit Text. Selanjutnya masukkan judul menu yang anda inginkan, misalnya Data Jenis Kendaraan.
Pemrograman Berorientasi Objek Lanjut

10

Gambar 1.10 Mengganti Text Menu

Gambar 1.11 Tampilan Menu yang Sudah Di edit

4. Untuk mengubah nama variable objeknya, klik kanan menu item. Pilih Change Variabel Name, kemudian ketikkan nama variabelnya. 5. Sekarang, tambahkan semua kebutuhan menu, sehingga menjadi gambar berikut.

Pemrograman Berorientasi Objek Lanjut

11

Gambar 1.12 Submenu File

Gambar 1.13 Submenu Transaksi

Gambar 1.14 Submenu Report

Gambar 1.15 Submenu Help

Pemrograman Berorientasi Objek Lanjut

12

Gambar 1.16 Hierarki Semua Menu Utama

Memasang File Jar(Setting Class Path)


Memasang file jar ke dalam aplikasi adalah pekerjaan yang sangat penting, karena dengan begitu integritas dan fleksibilitas untuk pengembangan program sangat mudah. Mungkin anda pernah memahami bagaimana file dll dalam windows bekerja. Dengan adanya sebuah dll tertentu, bisa dipakai secara bersama-sama oleh aplikasi lain. Dalam aplikasi ini, kita akan memasang distribusi file sebagai komponen penghubung database. Buatlah susunan folder program dan setingan file jar yang sudah disiapkan: 1. Buatlah folder com pada folder D:\Aplikasi Parkir Kendaraan\Aplikasi Parkir Kendaraan\kemudian kopi file mysql-connector-java-5.1.6-bin. 2. Buatlah folder com pada direktori folder D:\Aplikasi Parkir Kendaraan\Aplikasi Parkir Kendaraan\src\ kemudian kopi folder BIROSOFT yang berguna sebagai skin/style program

Gambar 1.17 Folder Program


Pemrograman Berorientasi Objek Lanjut 13

Memasang Skin yang Terdapat Pada Folder BIROSOFT


1. Untuk memasang skin silahkan anda buka AplikasiParkirKendaraanApp.java 2. Masukkan Kode program seperti berikut:
public static void main(String[] args) { try { launch(AplikasiParkirKendaraanApp.class,args); UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel"); } catch (ClassNotFoundException ex) { System.out.println(ex); } catch (InstantiationException ex) { System.out.println(ex); } catch (IllegalAccessException ex) { System.out.println(ex); } catch (UnsupportedLookAndFeelException ex) { System.out.println(ex); } }

Catatan:pada saat anda mengetikkan perintah UIManager.setLookAndFeel(.) Akan tampil lambang lampu boklam silahkan anda klik kanan lampu boklam tersebut kemudian pilih Surround with try-catch.

Memasang Driver MySQL


Untuk bisa melakukan hubungan atau koneksi dengan database MySQL, Anda harus memasang driver-nya. Caranya adalah: 1. Dari jendela Project pilih Libraries kemudian klik kanan pilih Add JAR/Folder kemudian klik Open.

Gambar 1.18 Penentuan File Driver MySQL sendiri


Pemrograman Berorientasi Objek Lanjut 14

Membuat Desain Form Data Jenis Kendaraan


Sekarang saatnya membuat form data jenis kendaraan agar petugas dapat mengetahu dan menginput jenis kendaraan. Lakukan beberapa langkah berikut ini: 1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other, sehingga muncul jendela New File.

Gambar 1.19 Membuat Objek Baru

2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.

Gambar 1.20 Membuat Form JInternalFrame Form

Pemrograman Berorientasi Objek Lanjut

15

3. Pada jendela New JInternalFrame Form, isikan Frmjnskendaraan pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.

Gambar 1.21 Menentukan Nama Form JInternalFrame Form

Gambar 1.22 Desain Form Baru 4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:

Pemrograman Berorientasi Objek Lanjut

16

JLabel

jTextEdit

JTable

JButton

Gambar 1.23 Desain Form Data Jenis Kendaraan

Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut:

package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*;
2. Pada bagian public class Frmjeniskendaraan extends javax.swing.JInternalFrame tambahkan kode berikut: public class Frmjeniskendaraan extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmjeniskendaraan */ public Frmjeniskendaraan() { initComponents(); //setting form agar pada saat di tampilkan berada pada posisi senter/tengah Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=this.getSize();

Pemrograman Berorientasi Objek Lanjut

17

if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 6); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); table.setModel(tableModel); Tabel(table, new int[]{90,400,90,}); setDefaultTable(); SetEditOff(); } 3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut: private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel(); private void Tabel(javax.swing.JTable tb, int lebar[] ) { tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int kolom=tb.getColumnCount(); for(int i=0;i < kolom;i++) { javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i); tbc.setPreferredWidth(lebar[i]); tb.setRowHeight(17); } } private javax.swing.table.DefaultTableModel getDefaultTabelModel() { return new javax.swing.table.DefaultTableModel( new Object[][] {}, new String [] {"Kode Jenis","Jenis Kendaraan","Tarif"} ){ boolean[] canEdit = new boolean[]{ false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex){ return canEdit[columnIndex];

Pemrograman Berorientasi Objek Lanjut

18

} }; } String data[]=new String[3]; private void setDefaultTable() { String stat =""; try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "SELECT * FROM tbljnskendaraan"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ data[0] = res.getString(1); data[1] = res.getString(2); data[2] = res.getString(3); tableModel.addRow(data); } res.close(); stt.close(); kon.close(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan disembarang tempat yang memiliki space kosong seperti berikut ini: int row = 0; public void Tampil(){ row = table.getSelectedRow(); KodeJenis.setText(tableModel.getValueAt(row, 0).toString()); Jenis.setText(tableModel.getValueAt(row, 1).toString()); Tarif.setText(tableModel.getValueAt(row, 2).toString()); Save.setEnabled(false); Update.setEnabled(true); Delete.setEnabled(true); SetEditOn(); }

Pemrograman Berorientasi Objek Lanjut

19

5.

Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong seperti berikut ini: public void BersihData(){ KodeJenis.setText(""); Jenis.setText(""); Tarif.setText(""); } public void SetEditOff(){ KodeJenis.setEnabled(false); Jenis.setEnabled(false); Tarif.setEnabled(false); } public void SetEditOn(){ KodeJenis.setEnabled(true); Jenis.setEnabled(true); Tarif.setEnabled(true); }

6.

Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); KodeJenis.requestFocus(); Save.setEnabled(true); Update.setEnabled(false); Delete.setEnabled(false); SetEditOn(); }

7.

Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed. private void SaveActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String KJ=KodeJenis.getText(); String J=Jenis.getText(); String T=Tarif.getText(); if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty())) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else {

Pemrograman Berorientasi Objek Lanjut

20

try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "insert into tbljnskendaraan values('"+KodeJenis.getText()+"',"+ "'"+Jenis.getText()+"',"+ "'"+Tarif.getText()+"')"; stt.executeUpdate(SQL); data[0] = KodeJenis.getText(); data[1] = Jenis.getText(); data[2] = Tarif.getText(); tableModel.insertRow(0, data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 8. Buatlah kode program even Click MouseClicked. dengan mengklik kanan table(grid) ->evens -> Mouse ->

private void tableMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if (evt.getClickCount()==1) { Tampil(); } } 9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String KJ=KodeJenis.getText(); String J=Jenis.getText(); String T=Tarif.getText(); if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty())) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus();

Pemrograman Berorientasi Objek Lanjut

21

}else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tbljnskendaraan set jenis='"+Jenis.getText()+"',"+ "tarif='"+Tarif.getText()+"'"+ "Where kodejenis='"+KodeJenis.getText()+"'"; stt.executeUpdate(SQL); data[0] = KodeJenis.getText(); data[1] = Jenis.getText(); data[2] = Tarif.getText(); tableModel.removeRow(row); tableModel.insertRow(row,data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action -> ActionPerformed. private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "delete from tbljnskendaraan where kodejenis='"+KodeJenis.getText()+"'"; stt.executeUpdate(SQL); data[0] = KodeJenis.getText(); data[1] = Jenis.getText(); data[2] = Tarif.getText(); tableModel.removeRow(row); stt.close(); kon.close(); BersihData(); Delete.setEnabled(false); Update.setEnabled(false);

Pemrograman Berorientasi Objek Lanjut

22

SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 11. Buatlah kode program validasi untuk kodejenis dengan cara klik kanan pada KodeJenis[jTextField] pilih evens -> Key -> KeyTyped. private void KodeJenisKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 2 digit if(KodeJenis.getText().length()>1) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 12. Buatlah kode program validasi angka pada tarif dengan cara klik kanan pada Tarif[jTextField] pilih evens -> Key -> KeyTyped. private void TarifKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE); this.dispose(); }

14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Jenis Kendaraan pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut:

Pemrograman Berorientasi Objek Lanjut

23

Gambar 1.24 Perintah Evens sub Menu Data Jenis Kendaraan


private void MenuKendaraanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan(); jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER); frmjeniskendaraan.show(); }

15. Jalankan Program kemudian klik menu Data Jenis Kendaraan maka akan tampil seperti berikut:

Gambar 1.25 Tampilan Program Data Jenis Kendaraan

Pemrograman Berorientasi Objek Lanjut

24

Membuat Desain Form Data Petugas


Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 5. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other, sehingga muncul jendela New File.

Gambar 1.26 Membuat Objek Baru

6. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.

Gambar 1.27 Membuat Form JInternalFrame Form 7. Pada jendela New JInternalFrame Form, isikan Frmpetugas pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 25

Gambar 1.28 Menentukan Nama Form JInternalFrame Form

Gambar 1.29 Desain Form Baru 8. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:

Pemrograman Berorientasi Objek Lanjut

26

JLabel

jTextEdit

JTable

JButton

Gambar 1.30 Desain Form Data Petugas

Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; 2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode berikut:
public class Frmpetugas extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmpetugas */ public Frmpetugas() { initComponents(); //setting form agar pada saat di tampilkan berada pada posisi senter/tengah Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();

Pemrograman Berorientasi Objek Lanjut

27

Dimension frameSize=this.getSize(); if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 6); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); table.setModel(tableModel); Tabel(table, new int[]{70,250,300,70}); setDefaultTable(); SetEditOff(); }

3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel(); private void Tabel(javax.swing.JTable tb, int lebar[] ) { tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int kolom=tb.getColumnCount(); for(int i=0;i < kolom;i++) { javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i); tbc.setPreferredWidth(lebar[i]); tb.setRowHeight(17); } } private javax.swing.table.DefaultTableModel getDefaultTabelModel() { return new javax.swing.table.DefaultTableModel( new Object[][] {}, new String [] {"ID Petugas","Nama Petugas","Alamat Petugas","Telpon"} ){ boolean[] canEdit = new boolean[]{ false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex){

Pemrograman Berorientasi Objek Lanjut

28

return canEdit[columnIndex]; } }; } String data[]=new String[4]; private void setDefaultTable() { String stat =""; try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "SELECT * FROM tblpetugas"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ data[0] = res.getString(1); data[1] = res.getString(2); data[2] = res.getString(3); data[3] = res.getString(4); tableModel.addRow(data); } res.close(); stt.close(); kon.close(); } catch (Exception ex) { System.err.println(ex.getMessage()); } }

4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0; public void Tampil(){ row = table.getSelectedRow(); IDPetugas.setText(tableModel.getValueAt(row, 0).toString()); NMPetugas.setText(tableModel.getValueAt(row, 1).toString()); Alamat.setText(tableModel.getValueAt(row, 2).toString()); Telp.setText(tableModel.getValueAt(row, 3).toString()); Save.setEnabled(false); Update.setEnabled(true); Delete.setEnabled(true); SetEditOn(); } 5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong seperti berikut ini:

Pemrograman Berorientasi Objek Lanjut

29

public void BersihData(){ IDPetugas.setText(""); NMPetugas.setText(""); Alamat.setText(""); Telp.setText(""); } public void SetEditOff(){ IDPetugas.setEnabled(false); NMPetugas.setEnabled(false); Alamat.setEnabled(false); Telp.setEnabled(false); } public void SetEditOn(){ IDPetugas.setEnabled(true); NMPetugas.setEnabled(true); Alamat.setEnabled(true); Telp.setEnabled(true); } 6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); IDPetugas.requestFocus(); Save.setEnabled(true); Update.setEnabled(false); Delete.setEnabled(false); SetEditOn(); } 7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed. private void SaveActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String IP=IDPetugas.getText(); String NP=NMPetugas.getText(); String A=Alamat.getText(); String T=Telp.getText(); if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) { JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); IDPetugas.requestFocus();

Pemrograman Berorientasi Objek Lanjut

30

}else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "insert into tblpetugas values('"+IDPetugas.getText()+"',"+ "'"+NMPetugas.getText()+"',"+ "'"+Alamat.getText()+"',"+ "'"+Telp.getText()+"')"; stt.executeUpdate(SQL); data[0] = IDPetugas.getText(); data[1] = NMPetugas.getText(); data[2] = Alamat.getText(); data[3] = Telp.getText(); tableModel.insertRow(0, data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 8. Buatlah kode program even Click MouseClicked. dengan mengklik kanan table(grid) ->evens -> Mouse ->

private void tableMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if (evt.getClickCount()==1) { Tampil(); } } 9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String IP=IDPetugas.getText(); String NP=NMPetugas.getText(); String A=Alamat.getText();

Pemrograman Berorientasi Objek Lanjut

31

String T=Telp.getText(); if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) { JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); IDPetugas.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tblpetugas set nmpetugas='"+NMPetugas.getText()+"',"+ "alamat='"+Alamat.getText()+"',"+ "telp='"+Telp.getText()+"'"+ "Where idpetugas='"+IDPetugas.getText()+"'"; stt.executeUpdate(SQL); data[0] = IDPetugas.getText(); data[1] = NMPetugas.getText(); data[2] = Alamat.getText(); data[3] = Telp.getText(); tableModel.removeRow(row); tableModel.insertRow(row,data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action -> ActionPerformed. private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "delete from tblpetugas where idpetugas='"+IDPetugas.getText()+"'"; stt.executeUpdate(SQL); data[0] = IDPetugas.getText(); data[1] = NMPetugas.getText(); data[2] = Alamat.getText();

Pemrograman Berorientasi Objek Lanjut

32

data[3] = Telp.getText(); tableModel.removeRow(row); stt.close(); kon.close(); BersihData(); Delete.setEnabled(false); Update.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 11. Buatlah kode program validasi untuk idpetugas dengan cara klik kanan pada IDPetugas[jTextField] pilih evens -> Key -> KeyTyped. private void IDPetugasKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 4 digit if(IDPetugas.getText().length()>3) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 12. Buatlah kode program validasi angka pada telpon dengan cara klik kanan pada Telp[jTextField] pilih evens -> Key -> KeyTyped. private void TelpKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 15 digit if(Telp.getText().length()>14) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE);

Pemrograman Berorientasi Objek Lanjut

33

this.dispose(); } 14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Petugas pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut:

Gambar 1.31 Perintah Evens sub Menu Data Petugas


private void MenuPetugasActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmpetugas frmpetugas=new Frmpetugas(); jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER); frmpetugas.show(); } 15. Jalankan Program kemudian klik menu Data Petugas maka akan tampil seperti berikut:

Gambar 1.32 Tampilan Program Data Petugas


Pemrograman Berorientasi Objek Lanjut 34

Membuat Desain Form Data Parkir Kendaraan Masuk


Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 9. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other, sehingga muncul jendela New File.

Gambar 1.33 Membuat Objek Baru

10. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.

Gambar 1.34 Membuat Form JInternalFrame Form

Pemrograman Berorientasi Objek Lanjut

35

11. Pada jendela New JInternalFrame Form, isikan Frmparkirmasuk pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.

Gambar 1.35 Menentukan Nama Form JInternalFrame Form

Gambar 1.36 Desain Form Baru 12. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 36

JLabel

jTextEdit

JTable

jTextEdit

JButton

Gambar 1.37 Desain Form Data Parkir Kendaraan Masuk

Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Date; 2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode berikut:
public class Frmparkirmasuk extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmparkirmasuk */

Pemrograman Berorientasi Objek Lanjut

37

public Frmparkirmasuk() { initComponents(); // Setting untuk mengatur posisi form Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = this.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 14); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); table.setModel(tableModel); Tabel(table, new int[]{70, 90, 70, 70, 70, 70, 70, 70, 70, 70, 70}); setDefaultTable(); TampilComboPetugas(); TampilComboKendaraan(); }

3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel(); private void Tabel(javax.swing.JTable tb, int lebar[] ) { tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int kolom=tb.getColumnCount(); for(int i=0;i < kolom;i++) { javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i); tbc.setPreferredWidth(lebar[i]); tb.setRowHeight(17); } } private javax.swing.table.DefaultTableModel getDefaultTabelModel() { return new javax.swing.table.DefaultTableModel( new Object[][] {},

Pemrograman Berorientasi Objek Lanjut

38

new String [] {"No.Tiket","Tanggal","ID Petugas","Nomor Plat","Kode Jenis","Jam Masuk","Jam Keluar","Bayar","Sisa"} ){ boolean[] canEdit = new boolean[]{ false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex){ return canEdit[columnIndex]; } }; } String data[]=new String[9]; private void setDefaultTable() { String stat =""; try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "SELECT * FROM tblparkir"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ data[0] = res.getString(1); data[1] = res.getString(2); data[2] = res.getString(3); data[3] = res.getString(4); data[4] = res.getString(5); data[5] = res.getString(6); data[6] = res.getString(7); data[7] = res.getString(8); data[8] = res.getString(9); tableModel.addRow(data); } res.close(); stt.close(); kon.close(); } catch (Exception ex) { System.err.println(ex.getMessage()); } }

4. Buatlah kode program TampilComboKendaraan, letakkan disembarang tempat yang memiliki space kosong, seperti berikut ini :
public void TampilComboKendaraan(){

Pemrograman Berorientasi Objek Lanjut

39

try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tbljnskendaraan"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ KodeJenis.addItem(res.getString("kodejenis")); } } catch (SQLException ex) { } } 5. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item -> ItemStateCanged. private void KodeJenisItemStateChanged(java.awt.event.ItemEvent evt) { // TODO add your handling code here: try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tbljnskendaraan where kodejenis='"+ KodeJenis.getSelectedItem().toString()+"'"; ResultSet res = stt.executeQuery(SQL); res.absolute(1); Jenis.setText(res.getString("jenis")); Tarif.setText(res.getString("tarif")); } catch (SQLException ex) { } }

6. Buatlah kode program TampilComboPetugas, letakkan disembarang tempat yang memiliki space kosong, seperti berikut ini :
public void TampilComboPetugas(){ try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tblpetugas"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ IDPetugas.addItem(res.getString("idpetugas")); } } catch (SQLException ex) {

Pemrograman Berorientasi Objek Lanjut

40

} } 7. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item -> ItemStateCanged. private void IDPetugasItemStateChanged(java.awt.event.ItemEvent evt) { // TODO add your handling code here: try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tblpetugas where idpetugas='"+ IDPetugas.getSelectedItem().toString()+"'"; ResultSet res = stt.executeQuery(SQL); res.absolute(1); NMPetugas.setText(res.getString("nmpetugas")); } catch (SQLException ex) { } }

8. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan disembarang tempat yang memiliki space kosong seperti berikut ini:

int row = 0; public void Tampil(){ row = table.getSelectedRow(); NoTiket.setText(tableModel.getValueAt(row, 0).toString()); TglParkir.setText(tableModel.getValueAt(row, 1).toString()); IDPetugas.setSelectedItem(tableModel.getValueAt(row, 2).toString()); NoPlat.setText(tableModel.getValueAt(row, 3).toString()); KodeJenis.setSelectedItem(tableModel.getValueAt(row, 4).toString()); JamMasuk.setText(tableModel.getValueAt(row, 5).toString()); JamKeluar.setText(tableModel.getValueAt(row, 6).toString()); Bayar.setText(tableModel.getValueAt(row, 7).toString()); Sisa.setText(tableModel.getValueAt(row, 8).toString()); Save.setEnabled(false); Update.setEnabled(true); Delete.setEnabled(true); } 9. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini: public void BersihData(){ TglParkir.setText("");

Pemrograman Berorientasi Objek Lanjut

41

NoTiket.setText(""); NoPlat.setText(""); KodeJenis.setSelectedIndex(0); Jenis.setText(""); Tarif.setText(""); JamMasuk.setText(""); JamKeluar.setText(""); Bayar.setText(""); Sisa.setText(""); }

10. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); TanggalOtomatis(); IDPetugas.requestFocus(); Save.setEnabled(true); } 11. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.

private void SaveActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String NT=NoTiket.getText(); String TGP=TglParkir.getText(); String IDP=IDPetugas.getSelectedItem().toString(); String NP=NoPlat.getText(); String KJ=KodeJenis.getSelectedItem().toString(); String JM=JamMasuk.getText(); if ((NT.isEmpty()) | (TGP.isEmpty()) |(IDP.isEmpty())|(NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty())))) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "insert into tblparkir values('"+NoTiket.getText()+"',"+ "'"+TglParkir.getText()+"',"+

Pemrograman Berorientasi Objek Lanjut

42

"'"+IDPetugas.getSelectedItem()+"',"+ "'"+NoPlat.getText()+"',"+ "'"+KodeJenis.getSelectedItem()+"',"+ "'"+JamMasuk.getText()+"',"+ "'"+JamKeluar.getText()+"',"+ "'"+Bayar.getText()+"',"+ "'"+Sisa.getText()+"')"; stt.executeUpdate(SQL); data[0] = NoTiket.getText(); data[1] = TglParkir.getText(); data[2] = IDPetugas.getSelectedItem().toString(); data[3] = NoPlat.getText(); data[4] = KodeJenis.getSelectedItem().toString(); data[5] = JamMasuk.getText(); data[6] = JamKeluar.getText(); data[7] = Bayar.getText(); data[8] = Sisa.getText(); tableModel.insertRow(0, data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 12. Buatlah kode program even Click MouseClicked. dengan mengklik kanan table(grid) ->evens -> Mouse ->

private void tableMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if (evt.getClickCount()==1) { Tampil(); } } 13. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String NT=NoTiket.getText(); String TGP=TglParkir.getText(); String IDP=IDPetugas.getSelectedItem().toString();

Pemrograman Berorientasi Objek Lanjut

43

String NP=NoPlat.getText(); String KJ=KodeJenis.getSelectedItem().toString(); String JM=JamMasuk.getText(); if ((NT.isEmpty()) | (TGP.isEmpty())|(IDP.isEmpty()) | (NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty())))) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+ "idpetugas='"+IDPetugas.getSelectedItem()+"',"+ "noplat='"+NoPlat.getText()+"',"+ "kodejenis='"+KodeJenis.getSelectedItem()+"',"+ "jammasuk='"+JamMasuk.getText()+"',"+ "jamkeluar='"+JamKeluar.getText()+"',"+ "bayar='"+Bayar.getText()+"',"+ "sisa='"+Sisa.getText()+"'"+ "Where notiket='"+NoTiket.getText()+"'"; stt.executeUpdate(SQL); data[0] = NoTiket.getText(); data[1] = TglParkir.getText(); data[2] = IDPetugas.getSelectedItem().toString(); data[3] = NoPlat.getText(); data[4] = KodeJenis.getSelectedItem().toString(); data[5] = JamMasuk.getText(); data[6] = JamKeluar.getText(); data[7] = Bayar.getText(); data[8] = Sisa.getText(); tableModel.removeRow(row); tableModel.insertRow(row,data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); } catch (Exception ex) { System.err.println(ex.getMessage()); } } }

Pemrograman Berorientasi Objek Lanjut

44

14. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action -> ActionPerformed. private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "delete from tblparkir where notiket='"+NoTiket.getText()+"'"; stt.executeUpdate(SQL); data[0] = NoTiket.getText(); data[1] = TglParkir.getText(); data[2] = IDPetugas.getSelectedItem().toString(); data[3] = NoPlat.getText(); data[4] = KodeJenis.getSelectedItem().toString(); data[5] = JamMasuk.getText(); data[6] = JamKeluar.getText(); data[7] = Bayar.getText(); data[8] = Sisa.getText(); tableModel.removeRow(row); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 15. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens -> Key -> KeyTyped. private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 2 digit if(NoTiket.getText().length()>9) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 16. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih evens -> Key -> KeyTyped.

Pemrograman Berorientasi Objek Lanjut

45

private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 10 digit if(NoPlat.getText().length()>9) evt.consume(); } 17. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE); this.dispose(); } 18. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki space kosong seperti berikut : public void TanggalOtomatis(){ Date tanggal = new Date(); JamMasuk.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal))); TglParkir.setText(""+ (String.format("%1$td:%1$tb:%1$tY",tanggal))); } 19. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Parkir Kendaraan Masuk pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut:

Gambar 1.38 Perintah Evens sub Menu Data Parkir Kendaraan Masuk

Pemrograman Berorientasi Objek Lanjut

46

private void MenuParkirINActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk(); jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirmasuk.show(); } 20. Jalankan Program kemudian klik menu Data Parkir Kendaraan Masuk maka akan tampil seperti berikut:

Gambar 1.39 Tampilan Program Data Parkir Kendaraan Masuk

Membuat Desain Form Data Parkir Kendaraan Keluar


Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other, sehingga muncul jendela New File.

Pemrograman Berorientasi Objek Lanjut

47

Gambar 1.40 Membuat Objek Baru

2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.

Gambar 1.41 Membuat Form JInternalFrame Form 3. Pada jendela New JInternalFrame Form, isikan Frmparkirkeluar pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.

Pemrograman Berorientasi Objek Lanjut

48

Gambar 1.42 Menentukan Nama Form JInternalFrame Form

Gambar 1.43 Desain Form Baru 4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:

Pemrograman Berorientasi Objek Lanjut

49

JLabel

jTextEdit

jButton jTextEdit

JButton

Gambar 1.44 Desain Form Data Parkir Kendaraan Keluar

Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut:
package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Date;

2. Pada bagian public class Frmparkirkeluar extends javax.swing.JInternalFrame tambahkan kode berikut:
public class Frmparkirkeluar extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmparkirkeluar */ public Frmparkirkeluar() { initComponents(); // Setting untuk mengatur posisi form Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=this.getSize();

Pemrograman Berorientasi Objek Lanjut

50

if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 14); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); NoPlat.setEnabled(false); NoTiket.setEnabled(false); } 3. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini: public void BersihData(){ TglParkir.setText(""); NoTiket.setText(""); IDPetugas.setText(""); NMPetugas.setText(""); NoPlat.setText(""); KodeJenis.setText(""); Jenis.setText(""); Tarif.setText(""); JamMasuk.setText(""); JamKeluar.setText(""); Bayar.setText(""); Sisa.setText(""); } Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); NoTiket.requestFocus(); Update.setEnabled(true); NoPlat.setEnabled(true); NoTiket.setEnabled(true); }

4.

Pemrograman Berorientasi Objek Lanjut

51

5.

Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String NT=NoTiket.getText(); String NP=NoPlat.getText(); String JK=JamKeluar.getText(); String BYR=Bayar.getText(); if ((NT.isEmpty())|(NP.isEmpty()|(JK.isEmpty()|(BYR.isEmpty())))) { JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+ "idpetugas='"+IDPetugas.getText()+"',"+ "noplat='"+NoPlat.getText()+"',"+ "kodejenis='"+KodeJenis.getText()+"',"+ "jammasuk='"+JamMasuk.getText()+"',"+ "jamkeluar='"+JamKeluar.getText()+"',"+ "bayar='"+Bayar.getText()+"',"+ "sisa='"+Sisa.getText()+"'"+ "Where notiket='"+NoTiket.getText()+"'"; stt.executeUpdate(SQL); stt.close(); kon.close(); BersihData(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } }

6.

Buatlah kode program padat jtextfield NoPolat klik kanan pilih events -> charet -> charetUpdate private void NoPlatCaretUpdate(javax.swing.event.CaretEvent evt) { // TODO add your handling code here: try { Connection kon = DriverManager.getConnection(database,user,pass);

Pemrograman Berorientasi Objek Lanjut

52

Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tblparkir where noplat='"+ NoPlat.getText().toString()+"'"+ "and notiket='"+NoTiket.getText().toString()+"'"; ResultSet res = stt.executeQuery(SQL); res.absolute(1); TglParkir.setText(res.getString("tglparkir")); IDPetugas.setText(res.getString("idpetugas")); KodeJenis.setText(res.getString("kodejenis")); JamMasuk.setText(res.getString("jammasuk")); JamKeluar.setText(res.getString("jamkeluar")); Bayar.setText(res.getString("bayar")); Sisa.setText(res.getString("sisa")); } catch (SQLException ex) { } } 7. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens -> Key -> KeyTyped. private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 10 digit if(NoTiket.getText().length()>9) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); 8. } Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih evens -> Key -> KeyTyped. private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 10 digit if(NoPlat.getText().length()>9) evt.consume(); } Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE);

9.

Pemrograman Berorientasi Objek Lanjut

53

this.dispose(); } 10. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki space kosong seperti berikut : public void TanggalOtomatis(){ Date tanggal = new Date(); JamKeluar.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal))); } 11. Buatlah kode program AddNew1 dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed private void AddNew1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: TanggalOtomatis(); }

12. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Parkir Kendaraan Keluar pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut:

Gambar 1.45 Perintah Evens sub Menu Data Parkir Kendaraan Keluar
private void MenuParkirOUTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar(); jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirkeluar.show(); }

Pemrograman Berorientasi Objek Lanjut

54

13. Jalankan Program kemudian klik menu Data Parkir Kendaraan Keluar maka akan tampil seperti berikut:

Gambar 1.46 Tampilan Program Data Parkir Kendaraan Keluar

Membuat ToolBar Pada Menu Utama


ToolBar adalah tombol berbentuk ikon atau yang dikenal dengan speed button atau Short Cut yang biasanya terletak di bawah menu utama. Tombol ini bisa langsung membawa pengguna ke jendela tertentu hanya dengan sekali klik saja. Sehingga tombol ini hampir pasti ada di setiap aplikasi. Untuk membuta, masuk dalam form aplikasiparkirkendaraanView dan lakukan langkah-langkah berikut : 1. Tambahkan JToolBar pada container mainPanel, perhatikan petunjuk berikut.

Pemrograman Berorientasi Objek Lanjut

55

Gambar 1.47 Menambah ToolBar

Gambar 1.48 Menambah Tombo pada ToolBar 2. Selanjutnya tambahkan JBUtton pada ToolBar (lihat gambar dibawah). Untuk menampilkan ikon, ubah propertis ikon (klik pada tombol ).

Gambar 1.49 Memilih Icon Anda bisa mengambil ikon dealm paket/folder yang sudah anda siapkan sebelumnya. Sebagai contoh, sebelumnya telah memasukkan file-file gambar dalam folder icon, file-file icon tersebut bisa dipakai. Tentunya bisa membuat sendiri gambar-gambar ikon yang lebih menarik dan cocok. Pilih define as a Resource (menjadikan sebagai file dalam resource) tidak perlu dipih. Tekan tombol OK pada jendela icon.
Pemrograman Berorientasi Objek Lanjut 56

Hapus properti Text SubMenuJenisKendaraan.

pada

JButton

tersebut,

berikan

variable

namanya

3. Berikan event klik pada jenis kendaraan dengan cara klik kanan, lalu pilih SubMenuJenisKendaraan -> Events -> Action -> actionPerformed. Selanjutnya masukkan perintah berikut:
private void SubMenuJenisKendaraanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan(); jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER); frmjeniskendaraan.show(); }

Gambar 1.50 Tombol pada ToolBar

4. Lakukan hal yang sama untuk membuat tombol Petugas,Kendaraan Parkir Masuk, Kendaraan Parkir Keluar, dan Report. Sehingga toolbar menjadi seperti gambar di atas. 5. Berikut event pada tombol Petugas:
private void SubMenuPetugasActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmpetugas frmpetugas=new Frmpetugas(); jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER); frmpetugas.show(); }

6. Berikut event pada tombol Parkir Kendaraan Masuk:


private void SubMenuParkirKendaraanINActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk(); jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirmasuk.show(); }

7. Berkut event pada tombol Parkir Kendaraan Keluar:


Pemrograman Berorientasi Objek Lanjut 57

private void SubMenuParkirKendaraanOUTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar(); jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirkeluar.show(); }

8. Berikut event pada tombol Report:


private void SubMenuReportActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: FrmReport frmReport=new FrmReport(); jDesktopPane1.add(frmReport, javax.swing.JLayeredPane.DEFAULT_LAYER); frmReport.show(); }

Sampai saat ini pembuatan aplikasi bisa dikatakan selesai.

MEMBUAT LAPORAN
Jika program aplikasi sudah selesai dibuat, kini giliran kita membuat halaman laporan dari semua data yang ada. Berikut selengkapnya.

Mengenal JasperReport
JasperReport adalah sebuah tool yang sangat powerfull untuk membuat laporan dalam bentuk PDF,HTML,XLS,RTF,ODT,CSV,TXT dan XML. Dengan kemampuan dan fleksibilitasnya yang sangat tinggi, anda bisa membuat berbagai laporan berbentuk Chart, Crosstabs, Subreport, dan kemampuan lain yang anda butuhkan.

Komponen yang Digunakan Untuk Membuat Report :


Silahkan klik kanan Libraries pilih Add JAR/Folder maka akan tampil seperti berikut:

Pemrograman Berorientasi Objek Lanjut

58

Gambar 1.51 direktory Add JAR/Folder

Adapun file-file Jasper Report Engine yang harus dipilih adalah sebagai berikut: Jasperreport-2.0.5.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Commons-beanutils-1.7.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Commons-collections-2.1.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Commons-digester-1.7.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Commons-logging-1.0.2.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Commons-logging-api-1.0.2.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Commons-javaflow-20060411.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib Jdt-compiler-3.1.1.jar pada direktori d:\Aplikasi Parkir Kendaraan\aplikasiparkirkendaraan\lib

Setelah anda mengambil semua file yang dibutuhkan seperti diatas maka langkah selanjutnya anda harus melakukan pengidentifikasian berkas jrxml pada NetBeans dengan cara berikut: Buka menu tools -> Options, sehingga muncul jendela Options. Pada jendela tersebut klik Advanced Option, sehingga muncul jendela Advanced Options.
Pemrograman Berorientasi Objek Lanjut 59

Dalam jendela Advanced Options, perhatikan sebelah kiri, pilih pada node IDE Configuration -> System -> Object Types -> XML Objects. Masih pada jendela Advanced Options, lihat jendela bagian kanan. Ada properti Extensions anda MIME Types, tekan pada tombol yang ada di sampingnya, sehingga muncul jendela XML Object Extensions and MIME Types. Pada kotak isian item, masukkan jrxml, kemudian tean Add, sehingga jrxml tersebut masuk dalam daftar item List, lalu klik tombol OK. Dan tutup jendela-jendela Options tersebut.

Gambar 1.52 Berkas yang Dikenali Editor NetBeans

Mengenal IReports
IReport adalah sebuah tool yang digunakan untuk membuat desain laporan pada JasperReports. Artinya, dengan fasilitas ini anda bisa membuat report dengan drag and drop, bahkan secara otomatis (wizard). Sama dengan JasperReports, program ini lagi-lagi open source. Pembuat program ini adalah Giulio Toffoli pada tahun 2005. Anda bisa mendapatkan informasi dan distribusi filenya pada alamat http://ireport.sourceforget.net.

Instalasi IReport dan Konfigurasi Databasenya


Untuk menginstal IReport sebelumnya anda harus mempunya file install JasperReport, jika sudah ada silahkan klik ganda file IReport-nb-0.9.1-windows-installer.exe. ini adalah distribusi yang mendukung NetBeans. Jadi, sangat memudahkan pengguna NetBeans.

Pemrograman Berorientasi Objek Lanjut

60

Gambar 1.53 Jendela Permulaan Pemasangan IReport

Gambar 1.54 Jendela Lisensi IReport

Pemrograman Berorientasi Objek Lanjut

61

Gambar 1.55 Jendela Pemilihan Feature IReport

Gambar 1.56 Jendela Lokasi Program File IReport Silahkan anda lanjutkan dengan mengklik tombol Next dan ikuti semua dialognya sampai selesai. Jalankan program iReport dengan cara masuk ke dalam Start menu Windows. Pilih JasperSoft > iReport-nb-0.9.1 -> iReport-nb-0.9.1, sehingga muncul jendela pembuka seperti pada gambar berkut diikuti dengan halaman utama

Pemrograman Berorientasi Objek Lanjut

62

Gambar 1.57 Jendela Splash Screen IReport

Gambar 1.58 Tampilan IReport Setelah tampil jendela menu iReport anda harus memanggil koneksi mysql-connector-java5.1.6-bin dengan cara klik Tools -> Options -> classpath klik tombol Add JAR silahkan anda ambil komponen mysql-connector-java-5.1.6-bin seperti gambar berikut:

Pemrograman Berorientasi Objek Lanjut

63

Gambar 1.59 Tampilan Add JAR/Path to the classpath

Gambar 1.60 Tampilan Komponen yang sudah dipanggil

Gambar di atas adalah jendela iReport pertama kali. Sebelum membuat laporan, buatlah dulu sebuah koneksi agar bisa membuka database anda. Dengan cara: pilih menu Tool -> Report Datasource, sehingga muncul jendela seperti gambar berkut.

Pemrograman Berorientasi Objek Lanjut

64

Gambar 1.61 Jendela Daftar Konfigurasi Koneksi

Selanjutnya tekan tombol New pada sebelah kanan, sehingga muncul jendela seperti gambar berikut.

Gambar 1.62 Pemilihan JDBC Selanjutnya, pilih Database JDBC dan klik tombol Next, Sehingga muncul jendela seperti pada gambar berikut.
Pemrograman Berorientasi Objek Lanjut 65

Gambar 1.63 Pengisian Konfigurasi Database Untuk memastikan hasil dari koneksi database yang sudah dibuat klik tombol Test jika benar maka akan tampil seperti gambar dibawah:

Gambar 1.64 Testing Koneksi Database

Pemrograman Berorientasi Objek Lanjut

66

Membuat Laporan
Setelah anda selesai membuat koneksi database langkah selanjutnya silahkan anda membuat laporan seperti berikut 1. Klik File -> Report Wizard maka akan tampil seperti gambar dibawah :

Gambar 1.65 Tampilan New Report 2. Ubahlah Report Name dan Location untuk menentukan dimana anda akan meletakkan laporan. 3. Kemudian Klik tombol Next untuk melanjutkan perintah seperti gambar dibawah:

Gambar 1.66 Tampilan New Report steps 2


Pemrograman Berorientasi Objek Lanjut 67

4. Ubahlah Connection / Data Source sesuai dengan koneksi yang anda buat , kemudian silahkan anda is Query seperti gambar dibawah ini:

Gambar 1.67 Tampilan Query 5. Klik tombol Next maka akan tampil seperti gambar dibawah ini:

Gambar 1.68 Tampilan Hasil Query


Pemrograman Berorientasi Objek Lanjut 68

6. Klik tombol Next seperti Gambar dibawah :

Gambar 1.69 Tampilan Hasil Query 7. Klik tombo Next dan silahkan anda isi Group1 dengan notiket dan Group2 dengan noplat seperti gambar dibawah :

Gambar 1.70 Tampilan Group Report 8. Klik tombol Next maka akan tampil pilihan Layout/jenis report yang anda inginkan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 69

Gambar 1.71 Tampilan Layout Report

Gambar 1.72 Tampilan Report 9. Untuk melihat hasil tekan Preview maka akan tampil seperti gambar dibawah ini:

Pemrograman Berorientasi Objek Lanjut

70

Gambar 1.73 Tampilan Report Preview 10. Setelah selesai membuat report yang pertama silahkan anda membuat report kedua, untuk report yang kedua kita tidak menggunakan report wizard tetapi kita akan coba membuat report secara manual. 11. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini:

Gambar 1.74 Tampilan New Report 12. Isilah Report Name dan Location sama seperti anda membuat report yang pertama kemudian klik tombol Next maka akan tampil seperti gambar dibawah ini:

Pemrograman Berorientasi Objek Lanjut

71

Gambar 1.75 Tampilan New Report Kosong 13. Kemudian setelah tampil report kosong tekan icon Query seperti gambar dibawah ini: sebelah Preview kemudian isikan

Gambar 1.76 Tampilan Query

Pemrograman Berorientasi Objek Lanjut

72

14. Setelah selesal silahkan anda masuk ke Report Inspector kemudian anda pilih Parameter klik kanan pilih Add Parameter setelah terbentuk Parameter1 silahkan anda ubah dengan cara meRename kemudian anda ubah menjadi NoTiket setelah selesai anda mengubah nama parameter silahkan anda anda pilih Propertis pilih Default Value Expression kemudian anda isikan angka sesua dengan notiket yang sudah anda simpan kedatabase. Kemudian silahkan anda disain seperti gambar dibawah ini:

Gambar 1.77 Tampilan Report 15. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini:

Gambar 1.78 Tampilan Report Preview


Pemrograman Berorientasi Objek Lanjut 73

Membuat Desain Form Report


Sekarang saatnya membuat form report untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other, sehingga muncul jendela New File.

Gambar 1.74 Membuat Objek Baru

2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.

Gambar 1.75 Membuat Form JInternalFrame Form 3. Pada jendela New JInternalFrame Form, isikan Frmreport pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 74

Gambar 1.76 Menentukan Nama Form JInternalFrame Form

Gambar 1.77 Desain Form Baru 4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:

Pemrograman Berorientasi Objek Lanjut

75

jButton JLabel jButton jButton

Gambar 1.78 Desain Form Data Report

Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut:

package aplikasiparkirkendaraan; import java.util.HashMap; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.JOptionPane;

Pemrograman Berorientasi Objek Lanjut

76

2. Pada bagian public class FrmReport extends javax.swing.JInternalFrame tambahkan kode berikut:
public class FrmReport extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form FrmReport */ public FrmReport() { initComponents(); // Setting untuk mengatur posisi form Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=this.getSize(); if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 8); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); } 3. Buatlah kode program CetakALL dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void CetakALLActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ String NamaFile="src/report/RptParkirAll.jasper"; HashMap parameter = new HashMap(); Class.forName(driver); Connection con = DriverManager.getConnection(database,user,pass); File reportfile = new File(NamaFile); JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath()); JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con); JasperViewer.viewReport(jasperPrint,false);

Pemrograman Berorientasi Objek Lanjut

77

JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !", "Cetak Data",JOptionPane.ERROR_MESSAGE); } } 4. Buatlah kode program CetakKode dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void CetakKodeActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ String NamaFile="src/report/RptParkirPerkode.jasper"; HashMap parameter = new HashMap(); parameter.put("NoTiket",NoTiket.getText()); Class.forName(driver); Connection con = DriverManager.getConnection(database,user,pass); File reportfile = new File(NamaFile); JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath()); JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con); JasperViewer.viewReport(jasperPrint,false); JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !", "Cetak Data",JOptionPane.ERROR_MESSAGE); } } 5. Buatlah kode program Close dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.dispose(); }

Pemrograman Berorientasi Objek Lanjut

78

Beri Nilai